[模板]洛谷T3374 树状数组 模板1
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<ctime> 6 #include<cstdlib> 7 8 #include<algorithm> 9 #include<string> 10 #include<stack> 11 #include<queue> 12 #include<vector> 13 14 using namespace std; 15 16 void add(int,int); 17 int pre(int); 18 19 int c[500010]; 20 21 int i,n,m; 22 23 int t; 24 25 int k; 26 27 int p,x; 28 int a,b; 29 30 int main(){ 31 scanf("%d%d",&n,&m); 32 33 for(i=1;i<=n;i++){ 34 scanf("%d",&t); 35 add(i,t); 36 } 37 38 for(i=1;i<=m;i++){ 39 scanf("%d",&k); 40 if(k==1){ 41 scanf("%d%d",&p,&x); 42 add(p,x); 43 } 44 else{ 45 scanf("%d%d",&a,&b); 46 printf("%d\n",pre(b)-pre(a-1)); 47 } 48 } 49 50 return 0; 51 } 52 53 void add(int p,int x){ 54 while(p<=n){ 55 c[p]+=x; 56 p+=p&-p; 57 } 58 } 59 60 int pre(int p){ 61 int sum=0; 62 while(p>=1){ 63 sum+=c[p]; 64 p-=p&-p; 65 } 66 return sum; 67 }