树状数组模板

来源:互联网 发布:谷歌网络博物馆 编辑:程序博客网 时间:2024/05/16 14:24

复习了一下树状数组,这几天陆陆续续把板子整理一下放上来

int arr[MaxN];inline int sum(int x){int res=0;while(x)res+=arr[x],x-=lowbit(x);return res;}inline void add(int x,int n){while(x<=n)arr[x]+=n;x+=lowbit(x);}inline int query(int x,int y){return sum(y)-sum(x-1);}//单点修改,区间求和int arr[MaxN]inline int sum(int x){int res=0;while(x)res+=arr[x],x-=lowbit(x);return res;}inline void add(int x,int d){while(x<=n)arr[x]+=d;x+=lowbit(x);}//arr存储两数差 inline int update(int x,int y,int d){add(x,d);add(y+1,-d);}//区间增改,单点查询void add(int x,int y){for (int i=x;i<=n;i+=lowbit(i))ci[i]+=y;c2[i]+=x*y;}int sum(int x)//查询前x项和 {    int ans=0;    for (int i=x;i;i-=lowbit(i))ans+=(x+1)*c[i]-c2[i];    return ans;} //区间修改,区间查询 
0 0