- admin's blog
二维树状数组
- @ 2024-1-7 0:26:49
二维树状数组
本来是没有计划往二维上面学的,但是矩阵乘法用到了二维前缀和,所以记录一下模板
二维前缀和公式
getsum(x2,y2)-getsum(x2,y-1)-getsum(x-1,y2)+getsum(x-1,y-1);
单点修改,区间查询
void add(int x,int y,int v)
{
while(x<=n)
{
int ty=y;
while(ty<=n)
tr[x][ty]+=v,ty+=lowbit(ty);
x+=lowbit(x);
}
}
int getsum(int x,int y)
{
int sum=0;
while(x)
{
int ty=y;
while(ty)
{
sum+=tr[x][ty],ty-=lowbit(ty);
}
x-=lowbit(x);
}
return sum;
}