首页 > 其他 > 详细

主席树的另一种写法

时间:2016-08-07 10:53:50      阅读:281      评论:0      收藏:0      [点我收藏+]

代码

技术分享
int hd[maxn];
struct Tree{ int lson,rson,cnt; };
struct CMTree
{
   int id;
   Tree tree[maxn*40];
   void init(){ id=0; }
   void pushup(int rt){ e.cnt=tree[e.lson].cnt+tree[e.rson].cnt; }
   void Build_tree(int& rt,int le,int ri)
   {
       rt=id++;
       e.cnt=0;
       if(le==ri) return;
       int mid=(le+ri)/2;
       Build_tree(e.lson,le,mid);
       Build_tree(e.rson,mid+1,ri);
       pushup(rt);
   }
   void Update(int pre,int& rt,int le,int ri,int k,int d)
   {
       rt=id++;
       if(le==ri){ e.cnt=p.cnt+d; return; }
       int mid=(le+ri)/2;
       if(k<=mid)
       {
           Update(p.lson,e.lson,le,mid,k,d);
           e.rson=p.rson;
       }
       else
       {
           Update(p.rson,e.rson,mid+1,ri,k,d);
           e.lson=p.lson;
       }
       pushup(rt);
   }
   int Query(int rt,int le,int ri,int x,int y)
   {
       if(x<=le&&ri<=y) return e.cnt;
       int mid=(le+ri)/2;
       int ret=0;
       if(x<=mid) ret+=Query(e.lson,le,mid,x,y);
       if(y>mid)  ret+=Query(e.rson,mid+1,ri,x,y);
       return ret;
   }

}CT;
View Code

 

主席树的另一种写法

原文:http://www.cnblogs.com/wust-ouyangli/p/5745659.html

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