template <typename T>
class fenwick {
public:
vector<T> fenw;
int n;
fenwick(int _n) : n(_n) {
fenw.resize(n);
}
void modify(int x, T v) {
while (x < n) {
fenw[x] += v;
x |= (x + 1);
}
}
T get(int x) {
T v{};
while (x >= 0) {
v += fenw[x];
x = (x & (x + 1)) - 1;
}
return v;
}
};
树状数组的另一种写法(下标从0开始到n-1)
最新推荐文章于 2022-08-28 17:58:33 发布
本文详细介绍了Fenwick Tree(也称为二进制索引树)的数据结构及其基本操作,包括`modify`和`get`函数的实现。Fenwick Tree是一种高效的数据结构,用于维护动态数组的前缀和查询,常用于解决区间求和问题,其时间复杂度为O(logn)。
摘要由CSDN通过智能技术生成