void updateMin(int u,int L,int R,int l,int r,int k) {
if(l<=L&&R<=r&&tr[u].mmx<k) {
int d=tr[u].mxa-k;
tr[u].sum-=(ll)tr[u].cnt*d;
tr[u].mxa=k,tr[u].tag1-=d;
return ;
}
pushdown(u);
if(l<=mid&&k<tr[ls].mxa) updateMin(ls,L,mid,l,r,k);
if(r> mid&&k<tr[rs].mxa) updateMin(rs,mid+1,R,l,r,k);
pushup(u);
}
如果 updateMin 写法和我一样的,需要先判断根节点的 mxa 大于 k 在进入函数