数颜色

[国家集训队] 数颜色 / 维护队列

思路

考虑到除了修改操作和数据范围以外,其余与[SDOI2009] HH的项链一样。考虑引入修改时间一维,对于在第 \(k\) 次修改以后,第 \(k+1\) 次修改以前的查询,我们记它的时间戳为 \(k\)。然后维护时 \([l,r]\) 的话一样的方式,对于时间,我们可以看修改的位置是否在当前的区间内,如果在,那么删除原有的数,插入新数;否则不管。我们发现当时间减小时又要换回来,于是我们可以只是交换这两个位置的值即可。

关于块长的选择,看如下博客:https://www.cnblogs.com/ouuan/p/MoDuiTutorial.html,大概取 \(\Large n^{\frac{2}{3}}\)

代码

posted @ 2023-08-02 11:29  wscqwq  阅读(5)  评论(0编辑  收藏  举报