社区讨论
求解答
P3372【模板】线段树 1参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mifylblk
- 此快照首次捕获于
- 2025/11/26 20:06 3 个月前
- 此快照最后确认于
- 2025/11/26 20:06 3 个月前
CPP
void modify(int l,int r,int pos,int k){
if(l <= tree[pos].l && tree[pos].r <= r){
tree[pos].add_tag += k;
tree[pos].sum += k * tree[pos].lenth;
return;
}
pushdown(pos);
int left = pos << 1;
int right = pos << 1 | 1;
int mid = (tree[pos].l + tree[pos].r) >> 1;
if(l <= mid) modify(l,r,left,k);
if(mid < r) modify(l,r,right,k);
update(pos);
}
在区间修改和区间查询里,为什么判断向下递归的条件是
if(mid < r) modify(l,r,right,k); 而不是 if(mid <= r) modify(l,r,right,k); ? 明明建树和操作的区间范围都是闭区间啊?回复
共 0 条回复,欢迎继续交流。
正在加载回复...