主席树:可持久化线段树。
可持久化线段树:保存历史记录的线段树。
来源:某大神考场上不会打某数据结构而发明的 Orz
如果更新某线段树要记录它的历史记录,最暴力的方法就是新开一棵线段树。
时间空间明显都很大。
我们发现:每次修改,线段树都只用修改某条路径上 log2n 个点,如果新开线段树全都再搞一遍太不划算了。
那我们可以试着只修改要修改的那条路径。
以线段树经典用法求区间最大为例,如图:
将区间
[1,2,3,4]
中的
1
改为
要修改的点重开一个空间,不用修改的直接连回原来位置就好啦。
可持久化线段树拥有了很多普通线段树不具有的特殊性质,所以也有了很多妙用。