發個ZKW線段樹板子測試一下代碼高亮

是我,Long time no see          --Jim

先安利

Wolves  歌手:Madilyn Baileyc++

 
 
 
 
 
 
 
 

代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<bits/stdc++.h>
#define MAXN 500005
using  namespace  std;
int  read(){
     int  x=0,t=1; char  c= getchar ();
     while (c< '0' ||c> '9' ){ if (c== '-' )t=-1;c= getchar ();}
     while (c>= '0' &&c<= '9' ){x=x*10+c- '0' ;c= getchar ();}
     return  x*t;
int  N,M,T[MAXN*4],Q;
void  Build_tree(){
     for (M=1;M<N;M<<=1);
     for ( int  i=M+1;i<=M+N;i++)T[i]=read();
     for ( int  i=M-1;i;i--)T[i]=T[i<<1]+T[i<<1|1]; 
}
void  Add( int  x, int  v){
     for (T[x=M+x]+=v,x>>=1;x;x>>=1)
         T[x]=T[x<<1]+T[x<<1|1];
}
long  long  Query( int  l, int  r){
     long  long  sum=0;
     for (l=l+M-1,r=r+M+1;l^r^1;l>>=1,r>>=1){
         if (~l&1)sum+=T[l^1];
         if ( r&1)sum+=T[r^1];
     } return  sum;
}
int  main(){
     N=read(),Q=read();
     Build_tree();
     while (Q--){
         int  a=read(),b=read(),c=read();
         if (a==1)Add(b,c);
         else  printf ( "%lld\n" ,Query(b,c)); 
     }
     return  0;
}
相關文章
相關標籤/搜索