144 字
1 分钟
封装模板(7) 数据结构
2025-12-05
无标签

树状数组#

点更新, 区间查询

struct FwTree {
vector<ll> bit;
int n;
FwTree(int n) : n(n), bit(n + 1, 0) {}
FwTree(const vector<int>& a) : FwTree(a.size()) {
for (int i = 1; i <= n; i++)
bit[i] = a[i - 1];
for (int i = 1; i <= n; i++) {
int pa = i + (i & -i);
if (pa <= n)
bit[pa] += bit[i];
}
}
inline int lowbit(int x) {
return x & (-x);
}
void add(int x, ll val) {
for (++x; x <= n; x += lowbit(x))
bit[x] += val;
}
ll sum(int x) {
ll ret = 0;
for (++x; x > 0; x -= lowbit(x))
ret += bit[x];
return ret;
}
ll sum(int l, int r) {
if (l > r) return 0;
return sum(r) - sum(l - 1);
}
};
封装模板(7) 数据结构
https://fuwari.vercel.app/posts/封装模板7-数据结构/
作者
ykindred
发布于
2025-12-05
许可协议
CC BY-NC-SA 4.0