主席树总结

来源:互联网 发布:川岛芳子 梅艳芳 知乎 编辑:程序博客网 时间:2024/05/19 16:49

主席树在多校里越来越多,本文对主席树做一下阶段性总结。

主席树类似于线段树,由于点更新每次只会更新logn个节点,我们可以申请内存(用数组模拟) ,当然一开始可以把整棵原始树要建立起来,更新的时候要用root数组记录当前版本树根的标号。这样点询问的时间和空间复杂度都是logn。

主席树支持还原历史版本(因为每个版本的树都已经存下来了) 数在区间第一次出现 区间有多少不同数 树套树的操作

关键在于如何建树,就是树的一维存什么,二维存什么,各自有什么含义。

http://poj.org/problem?id=2104 主席树询问区间第K大值 基本操作

http://blog.csdn.net/ied98/article/details/42799885 用启发式合并套主席树

http://blog.csdn.net/ied98/article/details/42977283 询问区间的众数

http://blog.csdn.net/ied98/article/details/46861035

http://blog.csdn.net/ied98/article/details/46861105 最基本的树套树

主席树是支持区间打标记的,具体用法和线段树的pushup pushdown类似 时间久了 博主并没有找到题所以在这里提一下。。

http://blog.csdn.net/eod_realize/article/details/60768476 询问区间不同数的个数

http://blog.csdn.net/eod_realize/article/details/60976267 区间不同数的个数相关

对于区间不同数的个数 有两种解法 不过推荐用离线倒着插点的方法,另一种解法很有局限性

http://blog.csdn.net/eod_realize/article/details/72848363 主席树脑洞题