$fhq Tree$ 区间翻转——$tag$的妙用 对于$fhq$树的基础知识,参见 "非旋(fhq) Treap 小记" 全篇采用结构体记录树的相关信息: $\frak{First.}$另一种实现$split$的方法 按子树大小分裂:将这棵树按照某个值$x$分裂成两棵子树,其中一棵包含权值小的前$ ...
分类:
其他好文 时间:
2020-05-02 18:41:46
阅读次数:
58
模板题: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+10; const int mod=1e9+7; struct node{ int l,r,key,mi,rnd,rev,a ...
[GDSOI2017]中学生数据结构题(树链剖分+fhq treap) 题面 给出一棵树,支持三种操作 1. ADD:路径加 2. QUERY:路径求和 3. SHIFT:树上路径整体循环移动一位(如:原路径上的权值依次是:1,4,5,3,操作完后变成:3,1,4,5) 分析 考验数据结构功底和代码 ...
分类:
其他好文 时间:
2020-04-20 21:30:59
阅读次数:
53
普通平衡树: 非递归查询: 无旋Treap维护序列: 操作1翻转序列[L,R],操作2查询pos位置的字符。 需要搭配快读和线性建树才能卡过去。 ...
分类:
其他好文 时间:
2020-03-21 09:40:52
阅读次数:
54
"题目链接" $Solution:$ 容易看出是一道平衡树的题(这里我们用$fhq Treap$维护) 但是由于$A$操作是全局修改,所以我们甚至不需要维护一个延迟标记,只需在全局记录两个标记即可 $Code:$ ...
分类:
其他好文 时间:
2020-02-19 21:08:45
阅读次数:
54
#include<iostream> #include<algorithm> #include<vector> #include<cstdio> #include<string> using namespace std; const int N=1e4+10; int a[N]; int root; ...
分类:
其他好文 时间:
2020-02-11 11:47:35
阅读次数:
78
fhq-Treap是一种非常优秀的无旋平衡树。下面我们来介绍他的函数原理 我们先介绍他的两个重要函数 1.spilt(分割函数) 我们将整棵树按照值的大小分割成x,y两棵树,x中的值都是小于等于key值的 这样我们就可以通过递归操作来解析,下面看具体代码 void spilt(int p,int k ...
分类:
其他好文 时间:
2020-02-10 19:46:52
阅读次数:
119
众所周知, BST 的操作复杂度是 $O(\log n)$ ,但 BST 可能会退化成一条链,于是我们可以使用平衡树。 平衡树有很多种,但我还只会三种(我太菜了):Treap,Splay,fhq Treap Treap Treap 记录了一个优先级,并在满足构成 BST 的同时,会按照优先级的大小来 ...
分类:
其他好文 时间:
2020-02-03 17:23:30
阅读次数:
88
FHQ Treap,又名无旋Treap,是一种不需要旋转的平衡树,是范浩强基于Treap发明的。FHQ Treap具有代码短,易理解,速度快的优点。(当然跟红黑树比一下就是……)至少它在OI中算是很优秀的数据结构了。 ...
分类:
其他好文 时间:
2020-01-26 22:36:22
阅读次数:
77
「luogu3380」【模板】二逼平衡树(树套树) "传送门" 我写的树套树——线段树套平衡树。 线段树上的每一个节点都是一棵 $\text{FHQ Treap}$ ,然后我们就可以根据平衡树的基本操作以及线段树上区间信息可合并的性质来实现了,具体细节看代码都懂。 参考代码: ...
分类:
其他好文 时间:
2020-01-24 15:55:28
阅读次数:
70