【模板】左偏树
2017-06-02 21:03
274 查看
最常见,同时也是最好写的可并堆
参考博客:左偏树-总结
很久之前写的,请见谅
参考博客:左偏树-总结
很久之前写的,请见谅
#include<cstdio> #include<algorithm> using namespace std; const int maxn=100005; struct node{ int l,r,x,d,id; node(int key=0,int i=0) {l=r=d=0;x=key;id=i;} bool operator<(const node&b){ return x<b.x||x==b.x&&id<b.id; } }tre[maxn]; int n,q,fa[maxn]; bool vis[maxn]; inline int red(){ int tot=0,f=1;char ch=getchar(); while (ch<'0'||'9'<ch) {if (ch=='-') f=-f;ch=getchar();} while ('0'<=ch&&ch<='9') tot=tot*10+ch-48,ch=getchar(); return tot*f; } int getfa(int x){ if (fa[x]==x) return x; return fa[x]=getfa(fa[x]); } int merge(int a,int b){ if (!a||!b) return a+b; if (tre[b]<tre[a]) swap(a,b); tre[a].r=merge(tre[a].r,b); if (tre[tre[a].l].d<tre[tre[a].r].d) swap(tre[a].l,tre[a].r); if (!tre[a].r) tre[a].d=0;else tre[a].d=tre[a].r+1; return a; } int main(){ //do something... return 0; }
相关文章推荐
- 左偏树(可并堆)详解及有关模板
- 洛谷.3377.[模板]左偏树(可并堆)
- HDU - 3031 To Be Or Not To Be (左偏树模板)
- 带模板的左偏树
- 【洛谷】3377【模板】左偏树(可并堆)
- 斜堆——【模板】左偏树(可并堆)
- 【bzoj1455】【罗马游戏】左偏树+并查集(模板)
- 左偏树(模板)
- 【模板】左偏树 (模板题:洛谷P3377左偏树/可并堆)
- HDU3031及左偏树模板
- 左偏树模板
- 左偏树模板
- ACM 左偏树(模板)
- 左偏树(可并堆)模板
- 「模板」 左偏树 - 实现可并优先队列
- 【bzoj1455】【罗马游戏】左偏树+并查集(模板)
- 【左偏树(可并堆)模板】
- HDU 1512 浅谈可并堆即左偏树模板及并查集灵活应用
- 【模板】左偏树(可并堆)
- 【模板】左偏树(可并堆)