本文目录#
可持久化的意义#
可持久化线段树允许在每次更新后保留历史版本,支持在不同版本间查询而无需拷贝整个树。常用于离线查询、可回溯数据结构与带时间戳的区间统计。
数据结构设计#
- 每个节点存储左右子指针与区间值;
- 更新时仅复制路径上的节点,其余节点复用;
- 版本指针存储根节点地址。
1 | class PersistentSegmentTree { |
应用场景#
- 离线查询历史区间和;
- 统计第 k 小(Persistent Segment Tree + 离散化);
- 带时间戳的日志/库存查询;
- 结合二分查找解决「第 k 小」等问题。
自检清单#
- 是否控制节点数量(O((n + q) log n))防止内存爆炸?
- 是否对版本索引进行有效管理与回收?
- 是否离散化数据以减少树高度?
参考资料#
- CP-Algorithms Persistent Segment Tree:https://cp-algorithms.com/data_structures/segment_tree/persistent.html
- 洛谷可持久化题单:https://www.luogu.com.cn/tag/95
- Competitive Programming Handbook 数据结构章节
本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。