mltang

博客园 首页 新随笔 联系 订阅 管理

主要就是每个位置x管理 x-lowbit(x)的长度

只要理解这句话就行了

树状数组主要用于区间查询和单点修改

所以用来求a[n]的数组中的k这个点,有多少个点比k这个点小

int lowbit(int k)
{
    return k&(-k);
}
void add(int pos,int a)
{
    while(pos < maxn)
    {
        c[pos] += a;
        pos += lowbit(pos);
    }
}
int getsum(int pos)
{
    int su=0;
    while(pos > 0)
    {
        su += c[pos];
        pos -= lowbit(pos);
    }
    return su;
}

 

posted on 2018-04-23 12:38  mltang  阅读(77)  评论(0编辑  收藏  举报