Treap 的合并 首先感谢 @Capella 的DeBug 其次,这是由一个 & 号引发的血案 注意对于所有修改操作都要 & Treap的合并, 启发式合并,对于每一个节点都 insert ,注意垃圾回收 cpp include include include include include de ...
分类:
其他好文 时间:
2018-03-19 20:01:46
阅读次数:
185
$treap$ (树堆)= $tree$ (树) + $heap$ (堆) 显然,这个名字一定是二叉排序树和堆的结合 事实就是这样 怎么定义? 是一棵二叉树,但并不一定是完全二叉树 按权值形成二叉排序树,即左边比"我"小,右边比"我"大 按随机给的值形成一棵堆,以小根堆为例,即"我"的孩子的随机值小 ...
分类:
其他好文 时间:
2018-03-11 02:49:52
阅读次数:
216
例题传送门 听YZ哥哥说Splay是一种很神奇的数据结构,所以学习了一下它的最基本操作。O(1)的Spaly。 伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(logn)内完成插入、查找和删除操作。它由丹尼尔·斯立特Daniel Sleator和罗伯特·恩卓·塔扬Robert ...
分类:
其他好文 时间:
2018-03-09 10:35:45
阅读次数:
209
分析:一道水题,去年考场发现了特点但是不会splay维护挂了,然后现在我写了个treap。 画一画图就可以解决这道题了,自己试一下。 代码如下: ...
分类:
其他好文 时间:
2018-03-08 23:01:58
阅读次数:
246
题目描述 Erwin最近对一种叫"thair"的东西巨感兴趣。。。 在含有n个整数的序列a1,a2......an中, 三个数被称作"thair"当且仅当i include include include include include using namespace std; typedef lo ...
分类:
其他好文 时间:
2018-03-08 14:00:06
阅读次数:
181
题目传送门 平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1 ...
分类:
其他好文 时间:
2018-03-08 00:08:16
阅读次数:
166
启发式合并 有$n$个集合,每次让你合并两个集合,或询问一个集合中是否存在某个元素。 ? 我们可以用平衡树/set维护集合。 ? 对于合并两个$A,B$,如果$|A| ...
分类:
其他好文 时间:
2018-03-05 18:10:33
阅读次数:
275
「模板」 FHQ_Treap 区间翻转 "" 没有旋转的 Treap 实现区间操作的功能,很好理解,也很好写,只是速度不算太快。 对于要翻转的区间,把整棵 Treap(存有区间 $[1,n]$ 的信息)Split 成 $[1,l 1]$、$[l,r]$、$[r+1,n]$ 三部分,给中间部分的根节点 ...
分类:
其他好文 时间:
2018-03-04 22:57:55
阅读次数:
304
题目:Luogu 1486 一道平衡树入门题,把员工工资的增减转化成工资下界的增减就可以了。 不过写指针版平衡树的坑很多,注意 maintain( ) 当前节点和调用儿子节点的值前判断是否为 NULL。 代码第95行在调用 cur->size 前需判断。 ...
分类:
其他好文 时间:
2018-03-04 11:42:11
阅读次数:
157
「模板」 FHQ_Treap "" 我也是偶然发现我还没发过FHQ_Treap的板子。 那就发一波吧。 这个速度实在不算快,但是 不用旋转 ,并且 好写 。 更重要的是,Splay 可以做的事情它都可以做!比如区间操作,以及LCT相关… 而且它还可以可持久化!(虽然目前还没有学) Capella 认 ...
分类:
其他好文 时间:
2018-03-03 21:26:16
阅读次数:
170