/****************** 树状数组 ******************/
struct BIT
{
const int n;
vector<int> tree;
BIT(int n) : n(n), tree(n + 1) {};
// 询问前x个数的和
int Query(int x)
{
int res = 0;
for (int i = x; i > 0; i -= (i & -i)) res += tree[i];
return res;
}
// 第l个位置+z
void Modify(int l, int z)
{
if (l <= 0) return;
for (int i = l; i <= n; i += (i & -i)) tree[i] += z;
}
// 区间求和
int rangeQuery(int l, int r)
{
return Query(min(n, r)) - Query(max(0ll, l - 1));
}
};
/***********************************************/
【数据结构】树状数组 - 模板总结
最新推荐文章于 2024-10-10 20:14:35 发布