zkw线段树

区间[1,n]

for(D=1;D<n+2;D<<=1);
for(int i=1;i<=n;++i)
    T[i+D]=a[i];
for(int pos=D-1;pos>=1;--pos)
    T[pos]=T[pos<<1]+T[pos<<1|1];
for(T[pos+=D]=newv;pos>>=1;T[pos]=T[pos<<1]+T[pos<<1|1]);
for(l+=D-1,r+=D+1;l^r^1;l>>=1,r>>=1) {
    if(~l&1)
        res+=T[l^1];
    if(r&1)
        res+=T[r^1];
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注