【模版】(舊)BIT 樹狀數組

樹狀數組(BIT)數組

樹狀數組不單單隻有求區間和的做用,還能夠以此來查詢區間最值或特殊值,(它的查詢和插入操做都是O(logn)級別的);
函數

它的最大好處就是簡單易寫,實現方便;spa

 

定義:code

// * 數組大小
#define size (100)
// * 樹狀數組 
int bit[BITSZ]

 

單點添加函數:(如下是僅對求和操做的樹狀數組函數)blog

void Add (int k,int val) {
    while (k<=size) {
        bit[k]+=val;
        k+=k&-k;
    } 
  return;     
}

 

查詢[1,k]的區間和函數:it

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

 

配合圖以下:class

相關文章
相關標籤/搜索