CF1630D Flipping Range

如果 $B$ 中有 $x,y$ ,那么由于 $B$ 中的数都不超过 $n/2$ ,所以对于长度为 $x-y$ 的数列也是可以翻转的。

根据辗转相减,我们可以知道 $\gcd(x,y)$ 是可以任意翻转的。

因此,我们只需要考虑翻转 $g=\gcd(b_1,b_2,\cdots,b_m)$ 的长度。

然后就是基操,把下标按照 $g$ 的余数分组,并且对每个数设状态,有/无反转为 $1/0$ ,我们发现每次翻转都会使得每组的异或值都改变,故所有组的异或值都是一样的。

因此我们设 $f_{i,0/1}$ 表示前 $i$ 个数中,和 $i$ 同一组的异或值为 $0/1$ ,和 $i$ 同一组的值的和的最大值是多少,故答案为 $\max(\sum_{i=n-g}^{n-1}f_{i,0},\sum_{i=n-g}^{n-1}f_{i,1})$ 。

posted @ 2022-02-17 08:38  xjqxjq  阅读(68)  评论(0编辑  收藏  举报