I will no longer be a transient When|

yabnto

园龄:2年8个月粉丝:14关注:17

平衡树从启蒙到入土

首先得承认伊德利拉美貌盖世无双将数列改成数后处理起来更舒服

什么是平衡树

更广泛的定义:左右子树高度不超过 1 的

如果将这东西和二叉搜索树结合,便是平衡树搜索树

平衡树分类:

  1. treap 随机
  2. splay 贪心
  3. fhq 合并 分裂

fhq 实现

合并

给出两个树,根分别为 a、b,如果我们将 a 作为根,那么 b 将会占掉 a 的一个儿子,所以节省脑细胞,如果通过要占那个儿子决定谁是根,当占掉儿子后那么原来那个儿子所在的子树就需要和 b 树合并。

分裂

将一个树按 v 分裂并,一边为小于等于 v

我们选择分成俩个树 a、b

如果当前这个根的权值小于等于 v,那么我们将当前节点以及左儿子全部给 a,但是右子树可能存在小于等于 v 的,所以我们需要继续往下走,继续切。

整体来说就像切蛋糕,假设我要吃一块稀奇古怪的,而每一块可能和另一块共顶一块巧克力,所以在切的时候必须绕过巧克力。

稍微讲一下应用好吧

P1486 [NOI2004] 郁闷的出纳员

OK呀,一眼上去,我们要维护一个全自动的处死机,我们可以形象的解释为:

我们可以区间(全局)加减法

看到这句时你的感受应该是:看到这个我们想到了线段树!

我们可以删掉小于最低值的人

看到这句时你的感受应该是:看到这个我们想到了一个动态维护点权的支持增删改查的 B(这里主要是因为一眼上去没有东西好做) 玩意

总的一句来说我们需要一个动态维护点权的支持增删改查的在 logn 的时复的数据结构

好,那么,会的人应该已经开始笑了,不会的我们来一个个分析

动态增删改查,很简单,我们可以用一颗树来维护,方便一点,二叉树

接下来,他要logn,所以我们很快想到要让他平衡,好,那么会一点的也开始笑了

实在不会?最后我们考虑什么平衡树可以区间加减,splay?fhq?

都行,问题来了,我们应该怎么实现动态维护点权

!当然,我们可以用懒标记来修改 !当然,我们需要下传标记 !我们似乎已经成功了
代码:是不是很弱智

本文作者:yabnto

本文链接:https://www.cnblogs.com/ybtarr/p/18718026

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   yabnto  阅读(5)  评论(0编辑  收藏  举报
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 光辉岁月 Audio artist
  3. 3 名前を呼ぶよ Audio artist
  4. 4 战歌 Audio artist
  5. 5 時を越えた想い Audio artist
  6. 6 所念皆星河 Audio artist
  7. 7 See you again Audio artist
時を越えた想い - Audio artist
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available

点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起