树状数组模板

leetcode5999 力扣

template <class T> class FenwickTree {
  int limit;
  vector<T> arr;
    //树状数组是从1开始储存的,而不是0
  int lowbit(int x) { return x & (-x); }

public:
  FenwickTree(int limit) {
    this->limit = limit;
    arr = vector<T>(limit + 1);
  }

  void update(int idx, T delta) {
    for (; idx <= limit; idx += lowbit(idx))
      arr[idx] += delta;
  }

  T query(int idx) {
    T ans = 0;
    for (; idx > 0; idx -= lowbit(idx))
      ans += arr[idx];
    return ans;
  }
};

上一篇:【GoReplay】 基于线上真实请求的流量重放压测


下一篇:.NetCore利用Redis实现对接口访问次数限制