码迷,mamicode.com
首页 > 其他好文 > 详细

主席树的另一种写法

时间:2016-08-07 10:54:22      阅读:194      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!