随笔分类 - 1.1.3树堆Treap
[HDU4585]Shaolin
摘要:Problem 问你一个数的前驱和后继 Solution Treap模板题 Notice 注意输出那个人的编号 Code C++ include include include include include include using namespace std; define sqz main
阅读全文
[HDU3726]Graph and Queries
摘要:Problem 给你一张图,点的权值,边和几个操作: D x: 删除第x条边 Q x y: 询问包含x的联通块中权值第y大的权值 C x y: 将x这个点的权值改为y Solution 一看就要离线处理,把所有操作都倒过来 然后删除操作变为加边操作 Notice 记得: 是改完以后再把点一个一个加入
阅读全文
[BZOJ3224]普通平衡树
摘要:Problem 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于x,且最大的数) 6.
阅读全文
[BZOJ3173]最长上升子序列
摘要:Problem 给你n个数A1~An,每次将i插入第Ai位后,最后输出每次插入后这个数列的最长上升子序列 Solution 这道题非常的妙。首先如果新加入的这个数构成了最长上升子序列,由于在它插入之前都是比它小的数,所以就是最后这个序列这个位置的最长上升子序列。 如果不是最长的,只需要和前面那个数插
阅读全文
[POJ2985]The k-th Largest Group
摘要:Problem 刚开始,每个数一个块。 有两个操作:0 x y 合并x,y所在的块 1 x 查询第x大的块 Solution 用并查集合并时,把原来的大小删去,加上两个块的大小和。 Notice 非旋转Treap一直错。。。 Code 旋转Treap(非旋转Treap总是TLE...) C++ in
阅读全文
[POJ2761]Feed the dogs
摘要:Problem 查询区间第k大,但保证区间不互相包含(可以相交) Solution 只需要对每个区间左端点进行排序,那它们的右端点必定单调递增,不然会出现区间包含的情况。 所以我们暴力对下一个区间加上这个区间没有的点,删去下个区间没有的点。 因为每个点最多被加入,删除1次,所以时间复杂度为O(nlo
阅读全文
[POJ1442]Black Box
摘要:Problem 有添加操作和询问操作,每次询问输出第i大的数。 Solution Treap标准模板题 Notice 非旋转的真心难打。 Code 非旋转Treap C++ include include include include include using namespace std; de
阅读全文
浙公网安备 33010602011771号