社区讨论

线段树单点修改这么写,到底错在哪里

灌水区参与者 7已保存回复 36

讨论操作

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

当前回复
36 条
当前快照
1 份
快照标识符
@mi85uqi3
此快照首次捕获于
2025/11/21 09:07
4 个月前
此快照最后确认于
2025/11/21 10:02
4 个月前
查看原帖
CPP
void updq(int p, int q, int v){
    if(t[p].l==t[p].r){
        t[p].val += v;
        return;
    }
    int mid = t[p].l+t[p].r>>1;
    if(q <= mid) updq(ls,q,v);
    else updq(rs,q,v);
    t[p].val = t[ls].val + t[rs].val;
}
其中ls=p<<1, rs=p<<1|1 如下是结构体t的定义
CPP
struct node{
    int l, r, add, val;
}t[maxn*4];
这么写单点修改就0分,用区间修改就ac了,不知道到底哪里错了

回复

36 条回复,欢迎继续交流。

正在加载回复...