bzoj2120
每块维护 \(pre_i\),代表该颜色上次出现的位置,将其排序。维护 \(ans\),代表块答案。\(O(\frac{n}{sz}\cdot sz\log sz)=O(n \cdot \log sz)\)
对于询问 \([l,r]\),先把所有块的答案加起来,然后减去 \(pre_i \geq l\) 的元素,其中散块暴力,整块可以二分。\(O(\sqrt{sz}+\frac{n}{sz}\cdot \log sz)\)
对于修改 \((pos,val)\),改完之后大概有三个块需要重构,直接暴力就完了。\(O(sz\log sz)\)
总复杂度 \(O(m\cdot sz\log sz + \frac{nm}{sz}\log sz)\),\(sz=\sqrt{n}\) 时取到 \(O(m\sqrt{n}\log{\sqrt{n}})\)

浙公网安备 33010602011771号