标签:merge 重建 treap else nod 持久化 平衡 数据结构 play
高级数据结构
一、左偏树&斜堆
合并,插入,删除
打标记
struct Node { int fa,l,r,w,dep } tree[Mx]; int Merge(int k1,int k2)//返回值为根节点 { if(k1==0||k2==0) return k1+k2; if(k1.val<k2.val) swap(k1,k2); tree[k1].r=Merge(tree[k1].r,k2); tree[tree[k1].r].fa=k1; if(tree[tree[k1].l].dep<tree[tree[k1].r].dep) swap(tree[k1].l,tree[k1].r); if(tree[k1].r==0) tree[k1].dep=0; else tree[k1].dep=tree[tree[k1].r].dep+1; return k1; }
二、线段树
建树,修改,查询,lazy标记
主席树,可持久化线段树
//zkw线段树
例:bzoj1146
bzoj2653
三、平衡树
旋转:splay
treap
笛卡尔树
后缀平衡树
重建:替罪羊树
四、树套树
线段树套线段树
线段树套平衡树 (区间第k小)
树状数组套主席树
替罪羊树套主席树
分裂合并:FHQ treap
标签:merge 重建 treap else nod 持久化 平衡 数据结构 play
原文地址:http://www.cnblogs.com/xiaoxubi/p/6189486.html