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