Cpp算法-树状数组

树状数组

模板:洛谷P3374

说明

tree[]树状数组

lowbit(int)神奇的函数

add(int x, int k)第 $x$ 个数加上 $k$

sum(int x)前 $x$ 个数的和

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int tree[2000010];

int lowbit(int k)
{
return k & -k;
}

void add(int x, int k)
{
while (x <= n)
{
tree[x] += k;
x += lowbit(x);
}
}

int sum(int x)
{
int ans = 0;
while (x != 0)
{
ans += tree[x];
x -= lowbit(x);
}
return ans;
}
作者

TonyCrane

发布于

2019-01-10

更新于

2020-05-05

许可协议