MX-2025 盖世计划 C 班 Day 10 复盘
平衡树
准确一点,是 fhq-Treap(膜拜 fhq orz%%%%%%)。
顾名思义,很平衡的树,树高始终为 \(\mathrm{O}(\log n)\) 级别的(注意不是严格的 \(\log n\),那样复杂度反而不忧)。
为什么要用平衡树
因为,线段树维护的序列的结构不能发生大的改变,所以我们就设计出了一种与权值弱相关的数据结构,这就是平衡树。
因此,大多数线段树的题目,平衡树都能平替。
关于 fhq-Treap
性质优良,几乎无所不能。
约等于对一个 shuffle 过的序列建立笛卡尔树,然后通过一系列的 split 和 merge 完成插入/删除/查询。
时间/空间/代码复杂度都特别优秀,仅次于红黑树。
Notes!
- split 处理完数据记得 merge 回去;
- rt 不固定,需单独存储根节点信息。
进阶用法
可以类似线段树地打 tag,以高效地维护区间修改操作。
持久化
类似线段树(怎么又是线段树?),注意到修改只会影响 \(\mathrm{O}(\log n)\) 个节点,于是只需要存储发生了改变的节点信息即可。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号