发个ZKW线段树板子测试一下代码高亮
先安利
Wolves 歌手:Madilyn Bailey
代码
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; } |