AC代码:https://www.luogu.com.cn/paste/jxbdobeu
其中
void pushdown(int k,int l)
{
if(!a[k].tag) return;
a[ls(k)].tag^=1;
a[rs(k)].tag^=1;
a[ls(k)].sum=(l-(l/2))-a[ls(k)].sum;
a[rs(k)].sum=(l/2)-a[rs(k)].sum;
a[k].tag=0;
}
若改成
void pushdown(int k,int l)
{
if(!a[k].tag) return;
a[ls(k)].tag^=1;
a[rs(k)].tag^=1;
a[ls(k)].sum=(l/2)-a[ls(k)].sum;
a[rs(k)].sum=(l-(l/2))-a[rs(k)].sum;
a[k].tag=0;
}
则无法通过
其中一篇题解中有一句话:如果说区间长度并不能整除以2,那么就把除以二向下取整丢给左儿子,然后把剩下的丢给右儿子。
所以是题解说错了吗?