• ACM ICPC Kharagpur Regional 2017


    ACM ICPC Kharagpur Regional 2017

    A - Science Fair

    题目描述:给定一个有(n)个点,(m)条无向边的图,其中某两个点记为(S, T),另外标记(p)个点表示有一个学生。现在校车从(S)出发,接名单上的学生到(T),每个学生等概率地出现在名单上,当校车经过某个有学生的点时,不管名单上有没有那位学生,那位学生也会上车。每个学生有一个(talk)值,校车完成任务的花费为:到(T)时实际学生的(talk)值的乘积模(10^9+7)与路径长度的和。对于每一个名单,校车会选最小花费来走,求期望花费。

    solution
    求出(p)个点两两之间不经过其它(p)点的最短距离,以及与(S, T)的距离(不经过其它(p)点),然后状压求出到达(T)时有(sett)这些学生的最短距离。然后状压(dp)求出接(sett)这些学生时的最小花费。

    时间复杂度:(O(2^p*p+p^p*m))

    B - Black Discs

    题目描述:给出(n)个直径在(x)轴上的半圆(半圆在(x)轴上方),每次询问给出一个在在第一象限的圆,问该圆与半圆的面积交。

    C - Uniform Strings

    题目描述:给出一个(01)串,求出相邻字符不同的个数,判断是否不超过两个。

    solution
    模拟。

    时间复杂度:(O(串长度))

    D - SAD Queries

    题目描述:给定(K)个序列,每次询问指定两个序列(P, Q),求(sum_{i=1}^{p} sum_{j=1}^{q} |P_i-Q_j|)

    solution
    暴力,每次询问枚举较短的序列,二分较长序列。

    时间复杂度:不会算

    E - Chef and XOR Queries

    题目描述:给定一棵树,边上有边权(未知)。有两种操作:1. 给定(x, y, v),判断按照已知信息(x)(y)的简单路径的(XOR)是否可能是(v),如果是则(XOR)值视为(v),否则输出'WA', 2.询问(x, y)简单路径的(XOR)值,或者未知输出(-1)

    solution
    树的形状是没有用的,用带权并查集记录每个点到并查集的根的(XOR)值,操作(1)相当于是并查集的合并。

    时间复杂度:(O(Q+n))

    F - Taxi Making Sharp Turns

    题目描述:给出(n)条首尾相连(第一条与最后一条不连)的线段,从第一条线段的无连接一端出发走到最后,问走的过程中拐角是否有超过(45^{circ}),若有,则问是否能通过改变一点的坐标使得不存在拐角超过(45^{circ}).

    solution
    模拟。

    G - Spam Classification Using Neural Net

    题目描述:给出(n)条直线的斜截式方程,给定一个区间([minX, maxX]),将区间里的每个整数点进行操作:将(x)代入第一条直线,得到的结果作为(x)代入第二条直线,以此类推。问最后的结果是否都是偶数。

    solution
    结果的奇偶性至于初始值的奇偶性有关,把(0, 1)带进去算一下即可。

    时间复杂度:(O(n))

    H - Non Overlapping Segments

    题目描述:有(n)条在(x)轴上的线段,每条线段的长度都是(R),左端坐标为整数(x_i),现在要将这些线段移到([0, L])(整条线段都要在里面),问最少移动多少条线段。

    solution
    将线段按(x_i)排序。记(f[i][j])表示前(i)条线段有(j)条没动能放多少条线段进来。枚举前一条线段(k),则(k, i)之间能放(frac{x_i-(x_k+R)}{R})条线段。如果(j+f[i][j] geq n),则用(n-j)更新答案。

    时间复杂度:(O(n^3))

    I - Spanning Tree

    题目描述:有一个(n)个点的图,边权未知,每次可以选择(A, B)两个点集,询问(A, B)之间的边的最小值,系统会返回边的最小值以及该边的两个端点,或是不存在。求出该图的最小生成树的边权和。每次询问的花费为(|A|),总花费不能超过(10^4)(|A|+|B|)不能超过(2*10^6).

    solution
    用并查集维护连通性。每次找出最小的并查集(A),询问(A, A)的补集,得到的回答就是生成树上的一条边。

    时间复杂度:(O(nlogn))

    J - Generating A Permutation

    题目描述:给定(n, K),找出一个(n)排列,满足(sum_{i=2}^{n} max(p_i, p_{i-1})=K),输出这个排列,或无解。

    solution
    (n=5)为例:
    54321最小为(14)
    35241最大为(18)

    显然,递减地排是最小的,从第(2)位开始隔一个放最大的数是最大的。以此来判断无解。
    设最小值为(minv, k-=minv),用数组(cnt)记住每个数对答案的贡献,开始时除了(1)每个数对答案的贡献都是(1)(i)指向(n)(j)指向(2),若(k geq i-j),则(i)的贡献加(1)(j)的贡献减(1),而一个数的贡献最多为(2),所以(i--, j++);否则(j++)
    算出每个数的贡献后就往排列填数即可。

    时间复杂度:(O(n))

    K - Number Game

    题目描述:给定两个数(A, M)。开始时从(A)中移除一个数字((A)不变)得到(B),然后进行若干次操作:每次从(A)中移除一个数字((A)不变)得到(C),将(C)连到(B)的后面,得到新的(B)。问开始时有多少种移除方式,使得之后进行若干次操作后得到的数是(M)的倍数。

    solution
    把每种移除方式得到的数模(M)的值算出来,然后爆搜((bfs))得出每种模值是否能最终变成(0)

    时间复杂度:(O(M^2))

  • 相关阅读:
    编译安装glibc
    Android SDK下载
    Ubuntu下Android编译环境的配置
    ubuntu常用命令
    硬盘概念解析
    ubuntu官方源列表网址
    Win7系统下利用U盘安装Ubuntu14.04麒麟版
    jdk5下载链接
    vim跳到文件头和文末结尾
    vim 全局替换命令
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/9008332.html
Copyright © 2020-2023  润新知