![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
平衡树
btc_runes
没什么意思的人!
展开
-
Splay 模板题
先介绍一下BST的性质: BST是一颗左儿子小于当前点权值,右儿子大于当前节点权值的一颗二叉树,这样一棵树有什么好处呢?这样的一棵树十分的强大,因为不管怎么变化这颗树的形状,只要符合以上条件,呢么这颗树的中序遍历都是从小到大的排序。 缺点: 这样一棵树可能因为某种单调的数据插入,从而退化成一条链,这样最坏的时间复杂度就会演变为O(n)O(n)O(n)的,这是我们不愿意看到的,显然这么强大的数据结构,时间复杂度演变成O(n)O(n)O(n)是谁也不愿意看到的,所以科学家 Tarjan 就优化出了 Spl原创 2020-11-13 18:43:10 · 213 阅读 · 0 评论 -
洛谷 P4309 最长上升子序列(平衡树维护)
传送门: 题目描述 给定一个序列,初始为空。现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置。每插入一个数字,我们都想知道此时最长上升子序列长度是多少? 输入格式 第一行一个整数N,表示我们要将1到N插入序列中。 接下是N个数字,第k个数字Xk,表示我们将k插入到位置Xk。(0<=Xk<=k-1,1<=k<=N) 输出格式 N行,第i行表示i插入Xi位置后序列的最长上升子序列的长度是多少。 输入输出样例 输入#1: 3 0 0 2 输出#1: 1 1 2 思原创 2020-05-16 10:29:26 · 388 阅读 · 0 评论 -
文艺平衡树:FHQ-Treap 实现区间操作
之前学了FHQ-Treap 但是很生疏,今天就完全自己码一发,熟悉熟悉,调调bug,,熟悉一下代码里面的各种细节问题。 因为FHQ-Treap 要实现区间操作,是不能按值分裂的,需要按节点大小分裂,这样我们只需要将节点大小为[l,r]区间的这颗树分解出来,然后进行修改即可。 文艺平衡树,是要颠倒 q 次的询问区间,最后输出整个区间,试想一下,如果朴素写法绝对复杂度爆炸,所以用 FHQ-Treap 的操作就很 logloglog 了,虽然常数有点大,但不是问题。 讲一下思路(菜鸡的小思路): 分裂出包含 [l原创 2020-05-15 11:17:29 · 997 阅读 · 0 评论 -
文艺平衡树(Fhq Treap)
传送门:文艺平衡树 首先要阐述一点,Fhq Treap的按大小分裂是支持区间操作的,而按值分裂是不支持区间操作的。 Fhq Treap的分裂方式: 按权值分裂 按大小分裂 按权值分裂: 根据插入点的权值,将树按w为边界,分裂为两颗树,一颗树的权值大于w,一棵树的权值小于等于w,这样再把新节点合并进去,就可以维护树的平衡 按大小分裂: 根据插入点的节点大小,将树按big为边界,分裂为两颗树...原创 2020-05-07 22:07:35 · 1363 阅读 · 2 评论 -
Fhq Treap 实现(二叉堆)优先队列
经验证: Fhq Treap根据二叉堆性质实现的优先队列,是没有问题的 (因为我已经试过了一些题) 我们如想要更改出队优先级,其实很简单,我们只需要改变递归的方向即可,一直向左递归到最终的叶子节点,是最小,同理向右是最大 封装优先队列函数: struct queue { const int base = 131; int su = 1; int ran() { ...原创 2020-05-03 11:13:21 · 180 阅读 · 0 评论 -
替罪羊树
替罪羊树入门: 以洛谷模板题为例: 普通平衡树 这题正解是替罪羊树,呢么什么是替罪羊树? 替罪羊树其实就是一颗平衡树,但是我们要如何去维护树的平衡呢? 俗话说,暴力即优雅,替罪羊树,是通过重新构造不平衡的子树来进行维护树的平衡的 替罪羊树的部分: 插入操作:插入节点((检查树的平衡(不平衡,则重构树(中序遍历,分治重构树,),更新树的节点信息))) 删除操作:删除节点((检查树的平衡(不平衡...原创 2020-05-02 08:45:39 · 330 阅读 · 0 评论 -
Fhq treap P3369 【模板】普通平衡树
传送门: 学了Fhq Treap之后,我深深的了解到 Fhq Treap的牛逼,因为上一张学了替罪羊平衡树,码量很大,操作繁琐,不支持提取区间信息,虽然简单理解,但是Fhq也很好理解呀,而且码量不大,能快速维护一颗平衡树,支持提取区间信息 Fhq Treap 的骚操作: 分裂 合并 分裂: 分裂操作其实很简单理解,把一颗平衡树按照插入的值为界限,分裂成两棵树,记录两个树的根节点即可 合...原创 2020-05-02 17:59:50 · 215 阅读 · 0 评论