如果你的分块只A了第二个点,请注意你在更新零散块,修改该块的答案总和时是否判断的是当前点的状态抑或块的标记
简而言之:
for(int i=l;i<=r;i++) a[i]^=1,sum[id[l]]+=(a[i]^tag[id[l]]?1:-1);
而不是:
for(int i=1;i<=r;i++) a[i]^=1,sum[id[l]]+=(a[i]?1:-1);