作为一个线段树:
```cpp
LL query(int u,int l,int r,int L,int R) {
if(L<=l&&r<=R) return w[u];
else if(l>R||r<L) return 0;
else{
int mid=l+r>>1;
push_down(u,l,r);
>>>> return query(u<<1,l,mid,L,R)+query(u<<1|1,mid+1,r,L,R);
}
}
```
```cpp
void update(int u,int l,int r,int L,int R,LL x) {
if (L<=l&&r<=R) add_tag(u,l,r,x);
else if (l>R||r<L) return;
else{
int mid=l+r>>1;
push_down(u,l,r);
update(u<<1,l,mid,L,R,x);
update(u<<1|1,mid+1,r,L,R,x);
push_up(u);
}
}
```
两处`>>>>`所指的地方有问题。~~但是对于这道题有没有影响就不知道了。~~
因此这道题不提倡线段树
by ___PatrickChen___ @ 2023-07-01 16:28:26
建议使用差分树状数组,省空间+省码量。
by ___PatrickChen___ @ 2023-07-01 16:29:59