題意
給定序列 \(A\),以及下標集合 \(B\),每次操作可以選擇 \(x \in B\),並再 \(A\) 中隨意挑選一個長度為 \(x\) 的子段翻轉正負,求可能的 \(\sum A_i\) 的最大值。
Sol
不難注意到所有的操作都能被 \(\gcd(B)\) 來表示。
設 \(s = \gcd(B)\)。
不難注意到一個操作,即是 \([1, s], [2, s + 1]\)。
因此對於 \(s\) 的模數分組,若同一組的負數數量為偶數,則答案為絕對值之和,若為奇數,則為絕對值之和減去絕對值最小的數。
還有一種情況,若第一次操作 \([1, s]\),會翻轉每一組的奇偶,單獨判斷一下即可。