[模板]洛谷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
",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 }
原文地址:https://www.cnblogs.com/running-coder-wfh/p/7067568.html