比赛:Codeforces Round #427 (Div. 2)
时间:2017.7.31晚
开场发现有6道题,都是水题(可能我只会做水题)
A:比较(2t_1+sv_1)与(2t_2+sv_2)的大小
B:给你一个数字串,要求所有数字的和(geq k),问你最少要改多少个数字。从(0)到(9)枚举,每次把当前数字改成(9)
C:给你(n)个星星,亮度呈周期性变化(周期相同且(leq11)),每次问你一个矩形内的星星在时刻(t)的亮度和是多少。就出每个星星在每一个时刻的位置,用前缀和维护
D:一个关于回文串的题:一个串是(1-)回文串当且仅当这个串是回文串。一个串是(k-)回文串当且仅当这个串的前一半与后一半相同且前一半是((k-1)-)回文串。用回文自动机维护不超过当前串长一半的最长回文后缀。
E:一道交互题。有一个序列,长度为n,有(n-2)个元素是(x),剩下两个是(y)。你可以询问一个子序列的异或和,要你找出哪两个位置是(y)。
我们考虑两个(y)的下标(设为(a,b)),那么(a,b)用二进制表示一定有至少一位不同。我们从大到小枚举二进制位(i),询问所有第(i)为(1)的二进制位,直到其中有一个(y),设这位为(k)。然后从第(k-1)位开始从大到小枚举二进制位(i),就可以求出这两个答案第(i)位分别是什么。再从(k+1)位开始从小到大枚举二进制位(i),就可以求出这两个答案的第(i)位是什么。
其中只有第(k)位询问了一次,其他位都询问了两次,所以询问次数是(2lceil log n
ceil-1)
时间复杂度:(O(nlogn))
原题中(n=1000),询问次数(leq19)
F:给你一个(n)个点(n)条边的连通图,问你删去一条边(你选)后两点之间最短路的距离的最大值。直接数据结构+DP乱搞。
最后有(6)个人AK了