树状数组(BIT)
树状数组
树状数组是在线段树的结构上改造而来数据结构,主要用于完成:
给定一个初始值全为0的数列
①给定i,计算返回a1+a2+……+ai的值
②给定i和x,执行ai+=x
BIT的求和
ll sum(int i)
{
ll s = 0;
while (i > 0)
{
s += bit[i];
i -= i & -i;
}
return s;
}
BIT的值更新
void add(int i, int x)
{
while (i <= n)
{
bit[i] += x;
i += i & -i;
}
return;
}