异或和:
-
按位全部取反要 ^1 (和 1 异或)
-
区间长度取反(update)之前确保需要取反(即确保下传的lazy标记不是0)
更新函数update:
要有一步 i f(nl>r||nr<l)return;判断完全没有交集,什么情况这一步不多余?
mid=(l+r)>>1,当l=r=1时递归调用mod函数时
如果左子区间左右端点一直为1,1陷入死循环
查询函数query:
-
long long 类型的query 要写返回值
-
判断子区间是否和目的区间有交集
(nl<=mid)目标区间左端点(nl) 不大于 左子区间右端点(mid)(mid+1>=rl)目标区间右端点(rl) 不小于 右子区间左端点(mid+1)
输入:
cin输入被当成字符串的连续数字,要输入到char数组里
不要输入到int数组里(或bool数组里)
不然整个串都会被输入到同一个位置,数组只有第一个位置有值,后边是空的
2025.3.10
2025.3.14新增
mod函数(内嵌update函数)
区间修改ans[i]+=k*(r-l+1)不要忘了乘
bulid函数
建完了要push up