int t[maxn];
int lowbit(int x)
{
return x & (-x);
}
void add(int x,int v)
{
while(x <= maxn)
{
t[x] += v;
x += lowbit(x);
}
}
int query(int x)
{
int sum = 0;
while(x > 0)
{
sum += t[x];
x -= lowbit(x);
}
return sum;
int lowbit(int x)
{
return x & (-x);
}
void add(int x,int v)
{
while(x <= maxn)
{
t[x] += v;
x += lowbit(x);
}
}
int query(int x)
{
int sum = 0;
while(x > 0)
{
sum += t[x];
x -= lowbit(x);
}
return sum;
}
O(logn)内查询区间和、修改单点值。
本文介绍了一种高效的数据结构——树状数组,用于实现区间和的查询及单点值的更新操作,复杂度均为O(logn)。通过具体的C++代码示例,展示了如何使用树状数组进行低比特位操作(lowbit)、累加(add)及查询(query)等关键步骤。
2369

被折叠的 条评论
为什么被折叠?



