花了三周上午时间来啃平衡树。
从板子都不会写 到 独立完成黑题。
记录一下历程。
可以将其理解为二叉搜索树的高性能实现方式。
平衡树即为结构平衡的二叉搜索树。
通过不断将某节点旋转到根节点,使得整棵树仍满足二叉搜索树的性质。
且保持平衡不至于退化为链,以保证复杂度。
treap = tree + heap,是一种树和堆组合形成的数据结构。
treap 的每个节点上额外储存一个 关键值。
根据关键值调整 treap 结构,使其除满足二叉搜索树性质外,还满足父节点的关键值 \(\ge\) 儿子的关键值。
若关键值随机生成,则 treap 树高期望为 \(O(\log n)\)。
又称无旋 treap, 是一种特殊的 treap。
以分裂和合并为核心。
其操作方式使它天生支持维护序列、可持久化等特性。
一棵平衡树最重要的是它的结构。
只有结构才能反映 其维护的信息。
节点中携带的信息不一定都与其结构有关。
在实际应用时 一定要明确结构维护的信息。
用于练习板子和刷AC数。
P1801 黑匣子 查询最值
P2073 送花 查询最值
P2234 [HNOI2002]营业额统计 查询前驱后继
P2286 [HNOI2004]宠物收养场 查询前驱后继
P2343 宝石管理系统 查询最值
P3871 [TJOI2010]中位数 维护中位数 (查询指定排名)
P3850 [TJOI2007]书架 查询第k大
P1486 [NOI2004]郁闷的出纳员 查询第k大
原文:https://www.cnblogs.com/luckyblock/p/12907427.html