树状数组(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