lowbit(x):取x二进制中最后一位1代表的数;
#define lowbit(x) (x&(-x))
add(x,val):使x结点及其所有父节点数值增加val
void add(int x){
while(x<=maxn){
c[x]++;
x+=lowbit(x);
}
}
sum(x):求[1,x]的值
int sum(int x){
int s=0;
while(x>0){
s+=c[x];
x-=lowbit(x);
}
return s;
}
原文:https://www.cnblogs.com/better150/p/11705853.html