[模版] BIT 树状数组

Posted

tags:

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

树状数组(BIT)

树状数组不仅仅只有求区间和的作用,还可以以此来查询区间最值或特殊值,(它的查询和插入操作都是O(logn)级别的);

它的最大好处就是简单易写,实现方便;

 

定义:

// * 数组大小
#define BITSZ (100)
// * 树状数组 
int Bit[BITSZ]

 

 

单点添加函数:

void AddBit (int k,int val) {
    while (k<=BITSZ) {
        Bit[k]+=val;
        k+=k&-k;
    } 
  return;     
}

 

 

查询[1,k]的区间和函数:

int QueryBit (int k) {
    int sum=0;
    while (k>0) {
        sum+=Bit[k];
        k-=k&-k;
    } 
  return sum;     
}

 

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

树状数组模版

树状树组(Binary Indexed Tree (BIT))的C++部分实现

树状数组

Bit的树状数组

树状数组基本模版(区间更新,单点查询)

[leetcode] 树状数组 BIT