题解:P12569 [UOI 2023] An Array and Partial Sums

· · 题解

先把只需要操作零次和操作一次判掉,操作一次只需要操作整个序列即可,可以证明一定不劣。

有如下结论:操作次数不超过 3

这是因为我们发现对一个区间 [l,r] 做前缀和本质上是从 a_l,a_{l+1},...,a_{r} 变成 s_{l}-s_{l-1},s_{l+1}-s_{l-1},...,s_{r}-s_{l-1}。做后缀和本质上是从 a_l,a_{l+1},...,a_{r} 变成 s_{r}-s_{l-1},s_{r}-s_{l},...,s_{r}-s_{r-1}。所以如果我们找到 s 最小的位置 xs 最大的位置 y,若 x\leq y,则能在两次之内完成,否则我们把序列取反,两个位置就会反一反,也能在三次之内完成。

接下来就是只需要判断操作两次是否可行即可,分四类情况讨论: