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)\)

posted @ 2022-07-20 08:11  huayucaiji  阅读(88)  评论(0编辑  收藏  举报