悬赏关注

P3372 【模板】线段树 1

你得用多点修改,打懒标记。
by Lizichen_licis @ 2024-02-24 10:04:05


具体可以参考一下我的: ```cpp void maketag(int u,int len,long long val) { lzy[u]+=val; w[u]+=len*val; } void pushdown(int u,int L,int R) { int mid=(L+R)/2; maketag(2*u,mid-L+1,lzy[u]); maketag(2*u+1,R-mid,lzy[u]); lzy[u]=0; } void LRupdate(int u,int L,int R,int l,int r,long long val) { if(inRange(L,R,l,r)) maketag(u,R-L+1,val); else if(!outofRange(L,R,l,r)) { int mid=(L+R)/2; pushdown(u,L,R); LRupdate(2*u,L,mid,l,r,val); LRupdate(2*u+1,mid+1,R,l,r,val); pushup(u); } } ```
by Lizichen_licis @ 2024-02-24 10:04:47


其他函数用你自己的就行了
by Lizichen_licis @ 2024-02-24 10:05:50


Thanks.
by Dreamer_OI @ 2024-02-25 10:16:34


|