int lowbit(int n){
return n&(n^(n-1));
}也可以写成:int lowbit(int n){
return n&(-n);
}
//向上更新
void ADD(int p, int val){
while(p<=maxn){ //maxn是给定上限
c[p] += val;
p += lowbit(p);
}
}int getsum(int p){
int sum = 0;
while(p>0){
sum += c[p];
p -= lowbit(p);
}
return sum;
}
原文地址:http://blog.csdn.net/mullerwch/article/details/38382831