经典的二叉堆已经可以在O(logn)的复杂度的情况下维护堆这样的数据结构,也有d-堆可以维护成O(logdn)(虽然pop操作的复杂度是dlogdn),然而这两种堆不能满足logn的合并操作,它们的经常是O(nlogn),即每次将一个堆中的堆顶拿出来放到另一个堆里。虽然有很多情况不经常合并,但有时候 ...
分类:
其他好文 时间:
2018-01-19 23:25:02
阅读次数:
743
题意:维护两个栈,支持按插入时间合并 本来是左偏树的题,现在用treap水一下 把加入时间作为节点编号就可以很方便地实现了 ...
分类:
其他好文 时间:
2018-01-16 18:14:11
阅读次数:
242
[BZOJ][1] [Luogu][2] sol 左偏树。 这题目真的是调死我了。 左偏树删除任意节点:把这个点的左右子树合并接在原来的父亲上,再一路往上更新一下$dis$即可。注意特判删除的点原先就是根的情况。 对于全局最大值,写一个可删除的双堆结构(也可以写multiset),维护每个联通块的堆 ...
分类:
其他好文 时间:
2018-01-13 00:28:21
阅读次数:
132
【BZOJ2333】棘手的操作(左偏树,STL) 题面 "BZOJ上看把。。。" 题解 正如这题的题号 我只能$2333$ 神TM棘手的题目。。。 前面的单点/联通块操作 很显然是一个左偏树+标记 (确实很显然,只是写死人。。。) 然后对于全局的最大值而言 搞一个$multi$来水 看起来真的简单。 ...
分类:
其他好文 时间:
2018-01-12 22:34:12
阅读次数:
186
https://www.luogu.org/problemnew/show/3377 主要是删除堆顶元素后并查集关系的维护: 第一种方式(代码): 原来的堆顶是x,删除x后,合并x的左右子树l、r,新的堆顶为y 则令x的祖先指向y 堆顶的直接子节点在并查集中的祖先指向堆顶 这样在寻找l、r的祖先时, ...
分类:
其他好文 时间:
2017-12-29 18:58:55
阅读次数:
116
http://acm.hdu.edu.cn/showproblem.php?pid=1512 大约是个左偏树模拟大架裸题 分离出两mokey所在堆的根节点,改变key值后插入,合并两mokey ...
分类:
其他好文 时间:
2017-12-23 14:17:19
阅读次数:
130
洛谷 P3377 【模板】左偏树(可并堆) 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作) 操作2: 2 x 输出第x个数所在的 ...
分类:
其他好文 时间:
2017-12-22 15:56:01
阅读次数:
104
P3377 【模板】左偏树(可并堆) P3377 【模板】左偏树(可并堆) P3377 【模板】左偏树(可并堆) 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y ...
分类:
其他好文 时间:
2017-12-17 14:14:19
阅读次数:
232
左偏树裸题。 题面描述让人意识到了平面几何的重要性。 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<vector> #inclu ...
分类:
其他好文 时间:
2017-12-16 11:24:16
阅读次数:
124
左偏树。 每个子节点维护大根堆,遍历一个儿子就往自己合并,合并发现钱不够了就删除队顶。 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #inclu ...