樹狀數組(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