莫队学习笔记

所有内容均可见 OI-Wiki 莫队,下面是一些稍带思维的题目

普通莫队

P4462 [CQOI2018] 异或序列

考虑把信息转成前缀的异或形式,则求 \(s_r \oplus s_{l-1} = k\) 的个数,考虑莫队中增加一个数,那么分两种情况

  • 增加最左边的数 \(p\),那么对答案的贡献为 \(x \in [l,r],s_x = s_{p-1} \oplus k\)\(x\) 个数,计数数组维护即可

  • 增加最右边的数 \(p\),那么对答案的贡献为 \(x \in [l,r],s_{x-1} = s_p \oplus k\)\(x\) 个数,同理

删除操作同理

回滚莫队

P8078 [WC2022] 秃子酋长

暴力莫队 \(\Omicron(n \sqrt n \log n)\),无法通过,瓶颈在于单次操作无法做到 \(\Omicron(1)\)

我们发现用静态双链表做删除操作非常容易,于是考虑只删回滚莫队

发现仍然不好处理 add 操作,通过观察可以发现,由于我们只删回滚莫队的特征,可以将 add 看作 del 的撤销操作,那么我们只需在 del 时保留原来 pos 位置上的信息,add 时再还原就行

posted @ 2025-10-24 21:45  huangyuze  阅读(5)  评论(0)    收藏  举报