void build() {
for (int i = N+n+1>>1; i; i--) pushup(i);
}
单点改,区间求和
void modify(int x, longlong val) {
for (tr[x += N] = val; x >>= 1;) pushup(x);
}
longlong query(int l, int r) {
int ans = 0;
for (l+=N-1, r+=N+1; l^r^1; l>>=1, r>>=1) {
if (~l&1) ans += tr[l^1];
if ( r&1) ans += tr[r^1];
}
return ans;
}
区间加,单点查
void modify(int l, int r, longlong val) {
for (l+=N-1, r+=N+1; l^r^1; l>>=1, r>>=1) {
if (~l&1) tr[l^1] += val;
if ( r&1) tr[r^1] += val;
}
}
longlong query(int x) {
longlong ans = 0;
for (x += N; x; x >>= 1) ans += tr[x];
return ans;
}
ZKW线段树模板总结初始化int N = 4;while (N-2 N 1;建树void build() { for (int i = N+n+1>>1; i; i--) pushup(i);}单点改,区间求和void modify(int x, long long val) { for (tr[x += N] = val; x