leetcode5999 力扣
附上一篇解释原理的博客树状数组 数据结构详解与模板(可能是最详细的了)_bestsort-CSDN博客_树状数组
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;
}
};