window.cnblogsConfig = {//可以放多张照片,应该是在每一个博文上面的图片,如果是多张的话,那么就随机换的。 homeTopImg: [ "https://cdn.luogu.com.cn/upload/image_hosting/xkzro04i.png" ], }

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)\) 个节点,于是只需要存储发生了改变的节点信息即可。

link1

link2

posted @ 2025-08-12 22:02  TigerTanWQY  阅读(7)  评论(0)    收藏  举报