/*
單點修改,查詢的複雜度都爲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;
}
二維樹狀數組
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.