CF1630D Flipping Range
题意
给定序列 \(A\),以及下标集合 \(B\),每次操作可以选择 \(x \in B\),并再 \(A\) 中随意挑选一个长度为 \(x\) 的子段翻转正负,求可能的 \(\sum A_i\) 的最大值。
Sol
不难注意到所有的操作都能被 \(\gcd(B)\) 来表示。
设 \(s = \gcd(B)\)。
不难注意到一个操作,即是 \([1, s], [2, s + 1]\)。
因此对于 \(s\) 的模数分组,若同一组的负数数量为偶数,则答案为绝对值之和,若为奇数,则为绝对值之和减去绝对值最小的数。
还有一种情况,若第一次操作 \([1, s]\),会翻转每一组的奇偶,单独判断一下即可。