主席树在多校里越来越多,本文对主席树做一下阶段性总结。
主席树类似于线段树,由于点更新每次只会更新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 主席树脑洞题