最近看到有一种不用旋转的treap,好像还可以持久化,于是就学了一下。 如果你还不会Treap的话,那你可以点击这里,对旋转Treap有个大致了解,这里就不赘述Treap的性质了。 treap就是tree+heap。它的每个节点的权值data满足排序二叉树的性质,随机权值key满足堆的性质。由于ke ...
分类:
其他好文 时间:
2018-07-25 23:52:22
阅读次数:
195
http://codeforces.com/contest/863/problem/D treap 搞搞。 cpp include using namespace std; const int N = 200010; struct permrand { permrand() : it(0) { fo ...
分类:
其他好文 时间:
2018-07-22 11:26:13
阅读次数:
130
本文内容部分转自某大佬博客:https://blog.csdn.net/CABI_ZGX/article/details/79963427 例题:https://www.luogu.org/problemnew/show/P3369#sub 题目描述 您需要写一种数据结构(可参考题目标题),来维护一 ...
分类:
其他好文 时间:
2018-07-21 18:02:31
阅读次数:
191
数据结构复习1 主席树 细节: x和y是节点编号,所以是root[i]不是i 每次复制原来的节点,再新建 线段树 标记 多个标记考虑优先级 满足区间加法就可以用线段树 平衡树 Treap 满足平衡树的性质,同时随机附加域维护一个小根堆 rturn,左儿子成为根 c=t[x].l t[x].l=t[c ...
分类:
其他好文 时间:
2018-07-20 18:10:01
阅读次数:
162
关于重量平衡树的相关概念可以参考姊妹文章:重量平衡树之替罪羊树 Treap是依靠旋转来维护平衡的重量平衡树中最为好写的一中,因为它的旋转不是LL就是RR 对于每一个新的节点,它给这个节点分配了一个随机数,用作优先级,然后以这个优先级来维护一个堆结构 由于堆本身就是完全二叉树结构,这样维护之后的树就无 ...
分类:
其他好文 时间:
2018-07-18 20:46:38
阅读次数:
233
//平衡树 Treap //维护一个堆使得随机权值小(大)的数始终在上方 //使用随机权值目的:防止出题人卡 #include #include #include #include #include #include using namespace std; struct uio{ int l,r,... ...
分类:
其他好文 时间:
2018-07-08 20:11:43
阅读次数:
145
//平衡树 Splay //利用双旋 防止树退化成链 //时间比Treap慢log(n) #include #include #include #include #include #include using namespace std; struct uio{ int son[2],fa,num,... ...
分类:
其他好文 时间:
2018-07-08 20:09:58
阅读次数:
179
//Treap fhq版(不旋转) //所有操作依靠split()(分离)和merge()(合并)完成 //可支持区间操作和可持久化 比普通Treap更通用 //所有Treap中序遍历均为递增序列 #include #include #include #include #include #inclu... ...
分类:
其他好文 时间:
2018-07-08 20:04:18
阅读次数:
370
//Treap fhq版(不旋转) //此模板为平衡树维护区间操作的模板 //注:在区间操作中split()标准变为子树大小 #include #include #include #include #include #include #include #define INF 0x3f3f3f3f #... ...
分类:
其他好文 时间:
2018-07-08 20:02:11
阅读次数:
206