各种数据结构的知识点归纳

本文详细介绍了各种莫队算法,包括普通的莫队、带修莫队、树上莫队和只有插入的莫队,并探讨了各种普通的离线算法,如对L计算贡献、历史最优等。此外,还涉及到了颜色问题的处理以及通用线段树、平衡树的应用。内容深入,适合OI选手和数据结构爱好者学习。
摘要由CSDN通过智能技术生成

各种数据结构的知识点归纳

By SemiWaker


各种莫队

普通的莫队

设x所在块的编号为BID[x]。
把所有询问[L,R]按照(BID[L],R)的二元组去排序。
从第一个询问开始,每次暴力移动询问区间。
暴力移动的过程中,将L和R每次移动一个,加入或者删除区间的端点。
因为每次只会加入或者删除一个,而且空间只需要维护一个区间的信息,所以可以完成大多数区间询问。
当信息不满足结合律时,不能用树形结构,此时莫队算法就有用了。
分块大小为 n ,总时间复杂度 O(nn)

小优化:当下一个询问的R比当前询问的R小,说明已经遍历了一次了。这时不需要一个一个地将R往左移动,直接从下一个询问开始即可。

带修莫队

考虑加入修改信息。
将询问设为[T,L,R],T是第T次修改后的意思。
那么按照(BID[T],BID[L],R)的三元组进行排序,重复莫队的过程即可。
考虑修改,因为我们会加入和取消某一次修改,所以每一次修改都要记录修改前的和修改后的信息。
如果修改在[L,R]之间,就要计算贡献。
如果修改不在[L,R]之间,直接在外面修改。
块的大小为 n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值