C[x][y] = ∑ a[i][j], 其中,
x-lowbit(x) + 1 <= i <= x,
y-lowbit(y) + 1 <= j <= y.
二维树状数组的更新和求和函数:
int lowbit(int x)
{
return x&(-x);
}
void update(int x,int y,int val)
{
for(int i=x; i<=N; i+=lowbit(i))
{
for(int j=y; j<=N; j+=lowbit(j))
{
p[i][j] += val;
}
}
}
int getSum(int x,int y)
{
int sum=0;
for(int i=x; i>0; i-=lowbit(i))
{
for(int j=y; j>0; j-=lowbit(j))
{
sum += p[i][j];
}
}
return sum;
}
2807

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



