组题3

Posted on 2022-03-30 22:01  Capterlliar  阅读(37)  评论(0编辑  收藏  举报

A - Coprime Pair

题意:已知L≤x<y≤R,gcd(x,y)=1,求y-x的最大值。

解:没找到具体数值,但1e9范围内两素数间隔也就几千的样子,暴力枚举即可。注意求gcd也是有log级的复杂度的。

B - Count 1's

题意:给出一个01串,挑一个子数组反转区间,这个串的值为其中1的数量,问这个数量有几种可能。

解:可以看到1的可能数量总是连续的一段值。考虑最大值,也就是最多能增加多少个1。令原来的1为-1,0为1,求最大子数组和;最多增加多少个0(减少多少个1)也一样求,最后将两者相加再加1即可。

C - Distinct Numbers

题意:给出一串递增的非负数,每次可以将一个数变为更小的非负数,但变完后所有数字不能有重。第一个无法操作的人失败,问先后手谁必胜。

解:每次只能变成更小的值,也就是说所有可选的空当只会减少,现在要挑选一种方案使得自己可以填掉最后一个空当,显然这和奇偶有某种关联。首先我们肯定要压缩敌方空间,将an放到an-1之前的任意一个位置都是一样的;当an和an-1相邻时,敌方的任意一种操作都只能挤占一个空格,已经别无选择了,这时只需看剩下空格奇数还是偶数。也就是说,当an-an-1>1时,先手必胜;否则看空格数量即可。