主要就是每个位置x管理 x-lowbit(x)的长度
只要理解这句话就行了
树状数组主要用于区间查询和单点修改
所以用来求a[n]的数组中的k这个点,有多少个点比k这个点小
int lowbit(int k) { return k&(-k); } void add(int pos,int a) { while(pos < maxn) { c[pos] += a; pos += lowbit(pos); } } int getsum(int pos) { int su=0; while(pos > 0) { su += c[pos]; pos -= lowbit(pos); } return su; }