void update(ll p,ll le,ll ri,ll x){
ll l=tr[p].l,r=tr[p].r;
if(l>=le&&r<=ri){
tr[p].cnt+=x;
pushup(p);
return ;
}
ll mid=(l+r)>>1;
if(l<mid)update(p<<1,le,ri,x);
if(r>=mid)update(p<<1|1,le,ri,x);
pushup(p);
}
如图上面的连样例都过不去,下面的可以直接AC
void update(ll p,ll le,ll ri,ll x){
ll l=tr[p].l,r=tr[p].r;
if(ri<l||le>r)return;
if(l>=le&&r<=ri){
tr[p].cnt+=x;
pushup(p);
return ;
}
ll mid=(l+r)>>1;
update(p<<1,le,ri,x);
update(p<<1|1,le,ri,x);
pushup(p);
}