重见树状数组

Posted KaaaterinaX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重见树状数组相关的知识,希望对你有一定的参考价值。

树状数组是一种支持高效前缀查询的数据结构,基本构造如下:

每个节点存在一个数组里,对应一个固定的编号,并且有固定的区间长度,节点长度与lowbit有关。

以下为树状数组基础应用:单点修改+高效前缀和查询。

基础建树(和单点修改是同一个函数):

const int maxn=1e5+7;

int tr[maxn];//树状数组

int n;
int lowbit(int x)
    return x&(-x);

void update(int x,int d)
    while(x<=n)
        tr[x]+=d;
        x+=lowbit(x);
    

区间查询:

int query(int d)
    int res=0;
    while(d)
        res+=tr[d];
        d-=lowbit(d);
    
    return res;

以上是关于重见树状数组的主要内容,如果未能解决你的问题,请参考以下文章

重见树状数组

重见树状数组

2021-07-27 重见线段树

2021-07-27 重见线段树

2021-07-02 暑训开端——重见dp

树状数组及二维树状数组