树状数组基础操作
代码比较简单,但是用途比较受限,不如线段树用途那么广。
更多情况下,树状数组要与其他算法合用(如二分答案、前缀和优化之类的)才能发挥出最大的威力
更新
void add(int x) { while(x<105) { treep[x]++; x+=temp(x); } }
求和
int sum(int x) { int ans=0; while(x>0) { ans+=treep[x]; x-=temp(x); } return ans; }
取末尾1, 通过x与-x的补码取出最后一位1
int temp(int x) { return x&-x; //取出尾1 }
kkk