樹狀數組1模板 Luogu 3374
阿新 • • 發佈:2017-08-19
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 } 13int 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