【模版】(旧)BIT 树状数组
树状数组(BIT)
树状数组不仅仅只有求区间和的作用,还可以以此来查询区间最值或特殊值,(它的查询和插入操作都是O(logn)级别的);
它的最大好处就是简单易写,实现方便;
定义:
// * 数组大小 #define size (100) // * 树状数组 int bit[BITSZ]
单点添加函数:(以下是仅对求和操作的树状数组函数)
void Add (int k,int val) { while (k<=size) { bit[k]+=val; k+=k&-k; } return; }
查询[1,k]的区间和函数:
int Sum (int k) { int sum=0; while (k>0) { sum+=bit[k]; k-=k&-k; } return sum; }
配合图如下: