[模板]左偏树
Posted Aireen Ye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模板]左偏树相关的知识,希望对你有一定的参考价值。
可并堆
可以支持合并的堆.
/*大根堆*/ struct heap{ int l,r,w; }h[N]; int rt[N];//第i个堆的根的下标 /*合并以x,y为根的堆*/ inline int merge(int x,int y){ int t; //其中一个堆为空 if(!x||!y) return x+y; //使得x,y两个根中x大 if(h[x].w<h[y].w){ int t=x;x=y;y=t; } //保持堆两边的平衡 h[x].r=merge(y,h[x].r); t=h[x].l;h[x].l=h[x].r;h[x].r=t; return x; } inline int pop(int x){ int l=h[x].l,r=h[x].r; h[x].l=h[x].r=h[x].w=0; return merge(l,r); } inline int top(x){ return h[x].w; }
以上是关于[模板]左偏树的主要内容,如果未能解决你的问题,请参考以下文章