比赛:Codeforces Round #427 (Div. 2)
时间:2017.7.31晚
开场发现有6道题,都是水题(可能我只会做水题)
A:比较2t1+sv1与2t2+sv2的大小
B:给你一个数字串,要求所有数字的和≥k,问你最少要改多少个数字。从0到9枚举,每次把当前数字改成9
C:给你n个星星,亮度呈周期性变化(周期相同且≤11),每次问你一个矩形内的星星在时刻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位询问了一次,其他位都询问了两次,所以询问次数是2⌈logn⌉−1
时间复杂度:O(nlogn)
原题中n=1000,询问次数≤19
F:给你一个n个点n条边的连通图,问你删去一条边(你选)后两点之间最短路的距离的最大值。直接数据结构+DP乱搞。
最后有6个人AK了