社区讨论
关于线段树懒惰标记
学术版参与者 4已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @lo7v9840
- 此快照首次捕获于
- 2023/10/27 08:19 2 年前
- 此快照最后确认于
- 2023/10/27 08:19 2 年前
为什么修改时要把懒标记给子节点,感觉可以自己存着,然后等查询时再下放标记
CPPvoid modify(int p, int l, int r, int a, int b, int v){ //a~b += v
if(a > r || b < l) return;
if(a <= l && r <= b){
add[p] += v;
sum[p] += (r - l + 1) * v;
return ;
}
pushdown(p, l, r); //为什么这里要将标记给子结点?
int mid = (l + r) >> 1;
modify(p << 1, l, mid, a, b, v);
modify(p << 1 | 1, mid + 1, r, a, b, v);
sum[p] = sum[p << 1] + sum[p << 1 | 1];
}
回复
共 9 条回复,欢迎继续交流。
正在加载回复...