树状数组模板

发布于 2020-08-30  0 次阅读


在此只贴出模板,具体的原理参考大佬博客
树状数组详解

模板

int n;
int a[N],bit[N]; //对应原数组和树状数组

int lowbit(int x){
    return x&(-x);
}

void updata(int i,int k){    //在i位置加上k
    while(i <= n){
        bit[i] += k;
        i += lowbit(i);
    }
}

int getsum(int i){        //求A[1 - i]的和
    int res = 0;
    while(i > 0){
        res += bit[i];
        i -= lowbit(i);
    }
    return res;
}

void sub(int i,int k)       //在i的位置上减k
{
    while(i<=n)
    {
        bit[i]-=k;
        i+=lowbit(i);
    }
}


平平无奇的在校大学生