/*
单点修改,查询的复杂度都为log(n) * log(n)
*/
int sum[maxn][maxn];
int n;
char c;
inline int lowbit(int x)
{
return x & (-x);
}
//其中n为点的总数,向上更新树状数组
void add(int x,int y,int val)
{
for(int i = x;i <= n;i += lowbit(i))
{
for(int j = y;j <= n;j += lowbit(j))
{
sum[i][j] += val;
}
}
}
//求(1,1)到(x,y)所有点包含的总和
int query(int x,int y)
{
int now = 0;
for(int i = x;i >= 1;i -= lowbit(i))
{
for(int j = y;j >= 1;j -= lowbit(j))
{
now += sum[i][j];
}
}
return now;
}
二维树状数组
最新推荐文章于 2023-11-19 17:33:50 发布