-
现在怎么菜成这样了aaaaaaa
-
我们考虑枚举 \(i\),则到底是谁吃掉了 \(i\) 不重要 (我思考的时候就因为这个没有想到正解)
-
\(i\) 的后缀反着跑一边即可,因此只考虑 \(i\) 前缀把他吃掉的情况
-
发现就是找一段最短的前缀的后缀和使区间里的和 \(> a_i\)
-
但写完后会发现样例 \(3\) 过不去,因为如果区间中全是重复是不可行的
-
并不需要 \(st\) 表求区间最值判断相等,只需要记录数组 \(lst_i\) 表示上一个与 \(a_i\) 不同的位置
- \[\begin{cases} lst_i = lst_{i-1} & if & a_i = a_{i-1} \\ lst_i = i - 1 & elsewise \end{cases} \]
-
复杂度 \(O(n \log n)\),瓶颈在二分