【模板】树状数组 1

来源:互联网 发布:淘宝商城饰品店 编辑:程序博客网 时间:2024/06/01 09:16

单点修改+区间查询

#include<cstdio>using namespace std;int n,//点数     m,//操作数     C[500000];//树状数组 void add(int loc,int value){//单点修改     for(int i=loc;i<=n;i+=i&(-i))         C[i]+=value;}int query(int loc){//求前缀和     int ans=0;    for(int i=loc;i>0;i-=i&(-i))    ans+=C[i];    return ans;}int main(){    scanf("%d%d",&n,&m);    for(int i=1;i<=n;++i)    {        int a; scanf("%d",&a);        add(i,a);    }//建树     for(int i=1;i<=m;++i)    {        int t,x,y;scanf("%d%d%d",&t,&x,&y);        //t:操作类型          if(t==1)        {            //在x上加y             add(x,y);        }        else        {            //区间[x,y]内的和             printf("%d\n",query(y)-query(x-1));        }    }    return 0;}
0 0
原创粉丝点击