【题解】CF1556E 差分 前缀和 ST表 RMQ
令 \(c_i=a_i-b_i\) ,我们操作的目标即令所有的 \(c_i = 0\) 。
考虑一次操作的实际影响,选一个长度为 \(2k\) 的子序列对其进行 \(+1,-1,+1,-1...\) 。
trick:将正负性看作左 / 右括号进行括号匹配。
负数 \(x\) 看成 \(|x|\) 个左括号 ,正数 \(y\) 看成 \(y\) 个右括号 。
那么每次操作相当于选取形如 \(()()()()()()\) 这样的括号子序列删掉。
有解的充分必要条件为原序列也是合法括号序列。
那么对于合法性的判断,可以维护一个前缀和的区间 \(\min\),查询区间前缀和的最小值区间 \(l,r\) 有解的充分必要条件即 \(\max_{k\in [l,r]} (s[k]) < s[l-1]\)。
接下来考虑最优解:
从前缀和与差分的角度,我们考虑进行 \(+1,-1,+1,-1...\) 的本质影响即选取 \(k\) 个不交的区间对其进行区间加,那么进行的最少操作次数即 \(s[l-1] - \min_{k\in [l,r]} (s[k])\) 。