int lowbit(int x) { return x&(-x); } 修改某个位置上的值,查找一段区间的和(向上修改,向下统计) void update(int x,int num) { while(x<=MAXN) { c[x]+=num; x+=lowbit(x); } } int getSum(int x) { int s=0; while(x>0) { s+=c[x]; x-=lowbit(x); } return s; }
修改一段区间的值,查找某个位上的值(向上统计,向下修改) void update(int x,int num) { while(x>0) { c[x]+=num; x-=lowbit(x); } } int getSum(int x) { int s=0; while(x<=MAXN) { s+=c[x]; x+=lowbit(x); } return s; }