
左偏树
Chester_King
虽千万人,吾往矣。
展开
-
【洛谷】3377【模板】左偏树(可并堆)
题目传送门作为一个合格的蒟蒻,我们当然在学每一种算法后都要去做一些和这种算法有关的模板题。毫无疑问,这是一道左偏树的模板题。伏地膜大佬,这位大佬对左偏树的解释十分到位。左偏树就是在堆的基础上加上了距离的概念。距离指的是每一个节点到离他最近的不满节点的距离。若一个节点的左儿子或右儿子为空,则该节点是一个不满节点。左偏树有两个特殊的性质:1.一个节点的左儿子的距原创 2017-05-03 18:55:36 · 1182 阅读 · 0 评论 -
【HDU】1512 Monkey King 左偏树
题目传送门题目大意:每次取出两个大根堆的对顶,将这两个节点的键值减半,维护堆的性质,然后将这两个大根堆合并起来,输出堆顶的键值。很明显,这题的大部分时间都用来合并两个大根堆了,所以我们不能用普通的二叉堆,因为普通的二叉堆合并的时间复杂度是O(n)的。考虑到合并的时间复杂度应该降低,我们就想到了左偏树(当然,斜堆、二项堆、斐波那契堆也是可以的),合并操作的时间复杂度是O(logn)的。原创 2017-05-04 19:20:18 · 343 阅读 · 0 评论 -
【BZOJ】1455 罗马游戏 左偏树
题目传送门这题和洛谷上的左偏树模板的解题思路是一模一样的,所以只要贴上左偏树的模板就好了。附上AC代码:#include #include #include #define N 1000010using namespace std;int n,m,dis[N],w[N],x,y,f[N],ls[N],rs[N];void read(int& a){ static ch原创 2017-05-04 18:10:56 · 384 阅读 · 0 评论