ll AskRange(int pos, int x, int y) {
if (x <= s[pos].l && s[pos].r <= y) {
return s[pos].sum;
}
pushdown(pos);
ll val = 0;
int mid = (s[pos].l + s[pos].r) >> 1;
if (x <= mid) val = (val + AskRange(pos << 1, x, y)) % mod;
if (y > mid) val = (val + AskRange(pos << 1 | 1, x, y)) % mod;
return val;
}
(截的题解)
这个算的不是区间和吗?为什么不能直接输出这一段区间标号的sum?而且为什么要+=子区间内的和???