[关闭]
@ZSCDumin 2018-08-02T16:10:05.000000Z 字数 564 阅读 458

树状数组

总共三个函数

1. lowbit(i)函数

  1. int lowbit(int x) //求子叶数
  2. {
  3. return (x)&(-x);
  4. }

2. update(int k,int num)函数

  1. void update(int k, int num) //更新数据
  2. {
  3. while (k <= n)
  4. {
  5. c[k] += num;
  6. k += lowbit(k); //找父节点
  7. }
  8. }

3. sum(int k)函数

  1. int sum(int k) //求1~k的区间和
  2. {
  3. int sum=0;
  4. while(k)
  5. {
  6. sum+=c[k];
  7. k-=lowbit(k); //求父节点的下一个左子节点
  8. }
  9. return sum;
  10. }

4. 求区间a[i]+…+a[j]的和

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注