【学习笔记】珂朵莉树(ODT)
1|0珂朵莉树
1|10x00 起源
起源于 CodeForces 的一题 CF896C,当时出题人提供了这种做法,在随机数据下均摊复杂度比较优秀。
正统名字好像叫颜色段均摊,由于题目也得名于
1|20x01 基本结构
先看代码:
结构体中的
可让只读迭代器修改其中 的值。
重载运算符 <
的用意是让所有区间按照左端点从小到大排序。
例如原数列为
经过颜色均摊之后,形成的珂朵莉树是这样的:
1|30x02 split
珂朵莉数核心操作:split
,作用是以
为省时间且好写,set<node>::iterator
可以 typedef
一下或直接用 auto
(C++14 及以后)。
代码:
1|40x03 assign
对应区间推平操作。因为我们的 split
出来,然后删除中间的所有节点,最后插入一个
注意分裂时要先 split(r+1)
再 split(l)
,不然可能会导致原来指向 split(l)
的迭代器释放,造成 RE。
代码:
1|50x04 其他操作
基本都是套板子:
1|60x05 例题
- https://www.luogu.com.cn/problem/CF896C (梦开始的地方)
- https://www.luogu.com.cn/problem/SP13015 (前置知识:素数筛)
- https://www.luogu.com.cn/problem/SP19568 (上一题加强版,加了单点修改操作)
- https://www.luogu.com.cn/problem/CF915E (珂朵莉树板子)
1|70x06 完整代码
__EOF__

本文作者:TheSky233
本文链接:https://www.cnblogs.com/TheSky233/p/17034257.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/TheSky233/p/17034257.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!