社区讨论

关于线段树懒惰标记

学术版参与者 4已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@lo7v9840
此快照首次捕获于
2023/10/27 08:19
2 年前
此快照最后确认于
2023/10/27 08:19
2 年前
查看原帖
为什么修改时要把懒标记给子节点,感觉可以自己存着,然后等查询时再下放标记
CPP
void 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 条回复,欢迎继续交流。

正在加载回复...