代码如下
这样会RE,因为会不停进入modify函数,导致id一直倍增
而取消注释后就不会RE了,这个蒟蒻可以理解
不过普通线段树的板子里区间修改不是不需要注释掉的这部分的吗?mid应该肯定是属于[1,n]的啊?而这里mid会取到0,蒟蒻十分不解,求解答
void modify(int id,int x,int y,int v)
{
if(x<=X[tr[id].l]&&X[tr[id].r+1]<=y)
{
tr[id].sum+=v;
if(tr[id].l==tr[id].r)tr[id].len=(tr[id].sum?1:0)*(X[tr[id].r+1]-X[tr[id].l]);
else pushup(id);
return;
}
int mid=(tr[id].l+tr[id].r)>>1;
if(x<=X[mid+1])modify(id<<1,x,y,v);
if(X[mid+1]<y)modify(id<<1|1,x,y,v);
pushup(id);
}