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