树状数组模板


树状数组

初始化 Bit tr(n); // n 为树的长度
add(起点坐标, 增减数量);
sum(i坐标) // 计算前i的和。

code

// 树状数组
struct Bit {
  int n;
  vector<int> tr;
  Bit() {};
  Bit(int _n) { n = _n; tr.resize(n + 1); };

  void add(int a, int b) {
    while(a <= n) tr[a] += b, a += a & -a;
  }

  int sum(int a, int ret = 0) {
    while(a > 0) ret += tr[a], a -= a & -a;
    return ret;
  }
};

文章作者: scholar
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 scholar !
  目录