Treap是一种平衡二叉树,同时也是一个堆。它既具有二叉查找树的性质,也具有堆的性质。在对数据的查找、插入、删除、求第k大等操作上具有期望O(log2n)的复杂度。Treap可以通过节点的旋转来实现其维持平衡的操作,详见旋转式Treap. 而旋转式Treap在对区间数据的操作上无能为力,这就需要非旋...
分类:
其他好文 时间:
2015-08-12 23:15:24
阅读次数:
294
ACM 所有算法
数据结构
栈,队列,链表
哈希表,哈希数组
堆,优先队列
双端队列
可并堆
左偏堆
二叉查找树
Treap
伸展树
并查集
集合计数问题
二分图的识别
平衡二叉树
二叉排序树
线段树
一维线段树
二维线段树
树状数组
一维树状数组
N维树状数组
字典树
后缀数组,后缀树
块状链表
哈夫曼树
桶,跳跃表...
分类:
编程语言 时间:
2015-08-11 16:13:16
阅读次数:
357
Treap是一种动态平衡二叉树结构,具有期望的O(log2n)的复杂度。适用于动态区间数据的查询、更改、维护等操作。题目大意一组数从前向后插入队列中,插入的过程中会有查询,查询当前队列中的第k小的数。题目分析对于数据的查询,可以考虑使用treap这种平衡二叉树来实现。而且treap这种动态平衡树结构...
分类:
其他好文 时间:
2015-08-10 13:24:04
阅读次数:
80
题目大意对于二维平面上的n个点,给出点的坐标。定义一个点A覆盖的点的个数为满足以下条件的点B的个数:点B的x #includeusing namespace std;#define MAX_NODE_NUM 15500struct TreapNode{ int key; int priority; ...
分类:
其他好文 时间:
2015-08-09 18:28:41
阅读次数:
168
Treap是一种弱平衡二叉查找树,通过给每个节点赋优先值以及必要时进行节点的旋转来避免一般的二叉查找树退化成一条链,从而具有良好的时间性能。Treap实现将二叉查找树的高度值期望达到O(log2n),这条性质由定理将一组数据以随机的顺序插入一棵二叉查找树中,树的高度期望为O(log2n)得以保证。T...
分类:
其他好文 时间:
2015-08-09 17:05:10
阅读次数:
120
首先读完这题第一印象,是个裸题,很高兴。其次在打完代码之后,第二印象,很恶心,Treap的代码太长了,我今天下午敲了三遍,手都麻了。 废话不多说,正题。其实这个题不难,有几个点是很好的,首先,他的a值没有重复的,这就保证了你找前驱和后继的正确性,再次,没有宠物和人会同时在收养所内,那么你找的前...
分类:
其他好文 时间:
2015-08-08 19:48:20
阅读次数:
216
树是一种非常重要的数据结构,而二叉树是树的最基本的形式。像其他高级的数据结构,如 二叉查找树、平衡二叉树、AVL树、红黑树、splay 树(伸展树)、笛卡尔树、Treap、SBT树等都是以二叉树作为基础。性质树中每个节点都有0-2个子节点,每个子节点又成为一棵子树的根树中边的数目是节点的数目 - 1...
分类:
其他好文 时间:
2015-08-05 00:31:47
阅读次数:
192
由于只删除最小值和只查询最大值,所以我们只要维护一个maxn和一个size即可,需要注意的是删除到集合空时需要重新将maxn赋值为无穷小。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main () 7 { ...
分类:
其他好文 时间:
2015-08-04 20:39:26
阅读次数:
93
继续测模板... 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 struct Node 9 { 10 Node * ch[2]; 11 ...
分类:
其他好文 时间:
2015-08-02 16:47:20
阅读次数:
91
又一道数据结构的题目,用Treap可以轻松解决。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 struct Node 9 { 10 Node...
分类:
其他好文 时间:
2015-08-02 16:38:58
阅读次数:
129