在修改函数中:
void turn(int k,int l,int r,ll x)
{
if(a[k].lazy) lazydown(k);
if(a[k].l==l&&a[k].r==r)
{
a[k].sum+=(a[k].r-a[k].l+1)*x;
a[k].lazy+=x;
return;
}
int mid=(a[k].l+a[k].r)>>1;
if(r<=mid) turn(k<<1,l,r,x);
else if(l>mid) turn(k<<1|1,l,r,x);
else turn(k<<1,l,mid,x),turn(k<<1|1,mid+1,r,x);
update(k);
}
为什么也需要 lazydown
呢?
我感觉没有也可以吧......