1. 程式人生 > >樹狀陣列模板

樹狀陣列模板

const int maxn=32010;
int cnt[maxn];//記錄結果
int bit[maxn];//樹狀陣列
int n;//葉子結點數目

int lowbit(int x)
{//返回二進位制數的最後一位1
    return x&(-x);
}

int sum(int x)
{//返回a[1]~a[x]的和
    int res=0;
    while(x)
    {
        res+=bit[x];
        x-=lowbit(x);
    }
    return res;
}

void add(int x,int v)
{//實現對a[x]+v的修改
    while(x<=maxn)//注意這裡不能寫成x<=n
    {
        bit[x]+=v;
        x+=lowbit(x);
    }
}
--------------------- 
作者:@Herobrine 
來源:CSDN 
原文:https://blog.csdn.net/qq_41636123/article/details/82706654 
版權宣告:本文為博主原創文章,轉載請附上博文連結!