首页 > 其他 > 详细

北京培训记day5

时间:2016-12-17 13:46:10      阅读:430      评论:0      收藏:0      [点我收藏+]

高级数据结构

一、左偏树&斜堆

  合并,插入,删除

  打标记

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

北京培训记day5

原文:http://www.cnblogs.com/xiaoxubi/p/6189486.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!