1. 程式人生 > >樹狀數組1模板 Luogu 3374

樹狀數組1模板 Luogu 3374

add mes sum std 數組 ret while else turn

樹狀數組?

不理解?……背代碼吧……QAQ~(滑稽)

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5 using namespace std;
 6 int bit[1000000],n,m,d,p,xx,yy;
 7 void add(int i,int x){
 8     while(i<=n){
 9         bit[i]+=x;
10         i+=i & -i;
11     }
12 }
13
int sum(int i){ 14 int s=0; 15 while(i>0){ 16 s+=bit[i]; 17 i-=i & -i; 18 } 19 return s; 20 } 21 int main(){ 22 scanf("%d %d",&n,&m); 23 for(int j=1;j<=n;j++){ 24 scanf("%d",&d); 25 add(j,d); 26 } 27 for(int j=1;j<=m;j++){
28 scanf("%d",&p); 29 if(p==1){ 30 scanf("%d %d",&xx,&yy); 31 add(xx,yy); 32 }else{ 33 scanf("%d %d",&xx,&yy); 34 printf("%d\n",sum(yy)-sum(xx-1)); 35 } 36 } 37 return 0; 38 }

樹狀數組1模板 Luogu 3374