CF1707B Difference Array(乱搞+暴力)
CF1707B Difference Array
本题十分巧妙,实际上暴力即可。
但是暴力的理论复杂度为 \(O(n^2\log n)\)。我们要进行 \(n\) 轮,每轮有 \(O(n\log n)\) 的排序。
不过真的如此吗?
我们设 \(S=\sum\limits_{i=1}^n a_i\)。那么进行过一次操作过后的 \(S=a_n-a_1\leq a_n\)。
我们可以对 \(S\) 进行一些放缩,有 \(S=\sum\limits_{i=1}^{n-1} a_i+a_n\)。我们每次操作时把 \(0\) 去掉,显然 \(0\) 对答案没有任何贡献。那么 \(a_i\geq 1\),所以 \(S\geq n-1+a_n\)。\(S-a_n\geq n-1\)。也就是说我们可以认为一次操作后数列的和下降了至少 \(n-1\)。我们可以大致估算为 \(n\)。
那么我们进行了 \(\min (\frac{a_n}n,n)\) 轮。所以最终复杂度为 \(O(Q\log Q)\),\(Q=\max(a_n,n)\)。