bzoj2120

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

posted @ 2023-02-21 16:55  PYD1  阅读(30)  评论(0)    收藏  举报