
数据结构---Treap
Soar-
这个作者很懒,什么都没留下…
展开
-
Treap
Treap Treap是一种动态平衡的BST(Binary Search Tree),它每个节点拥有键值和优先级两种属性。对于键值而言,它是一颗排序二叉树。对于优先级而言,这棵树是堆(优先级最高的是根节点)。可以证明Treap中插入,删除和查找的期望时间复杂度均为O(logn)。优先级利用随机,从而保持Treap相对平衡。一般我们用Treap就是用来替代平衡二叉排序树用的。 ...原创 2018-05-24 11:10:29 · 138 阅读 · 0 评论 -
POJ 1442 Black Box(Treap,第k小)
题意:给定一个数组,有两种操作:A x :表示插入x。Get i:表示返回第i小的数。 题解: Treap实现二叉树。然而这道题出的比较特殊,这一个数组顺序,连续插入一段,然后输出第i大,i从1到n依次增大。可以用两个优先队列去写。 Treap实现:#include<cstdio>#include<iostream>#include<cstdlib&g...原创 2018-05-24 11:32:56 · 202 阅读 · 0 评论 -
POJ 3481 Double Queue(Treap实现二叉树)
题意:每个顾客有个编号和优先级,银行每次可以添加顾客的要求进队列,且保证队列中当前任意顾客的编号和优先级都不同.银行可以执行先服务最大优先级的顾客或者先服务最小优先级的顾客操作.对于每个服务,输出顾客的编号.题解: Treap实现二叉树。节点节点的v值为客户的服务优先级,节点r值为随机的r。#include<cstdio>#include<iostream>#...原创 2018-05-24 13:42:25 · 225 阅读 · 0 评论 -
POJ 2985 The k-th LargestGroup(Treap+并查集)
题意:有N只猫,开始每只猫都是一个小组,下面要执行M个操作。操作0 i j 是把i猫和j猫所属的小组合并。操作1 k 是问你当前第k大的小组大小是多少. 且k<=当前的最大组数. 题解: Treap实现名词树+并查集,并查集根节点root:pa[root] = -规模。/** treap求第k大*/#include<cstdlib>#include&l...原创 2018-05-24 13:49:40 · 160 阅读 · 0 评论