二维树状数组
我感觉二维树状数组和而为线段树的思想差不多,都是在原来的基础上加了一个新的树状数组或者是线段树,代码量也不是那么的大。
然后我想找一个图的,但是在百度上面也没有找到什么好点的图,因为一维树状数组解决的是一个区间的和,那么我们每个数下面再加上一个树状数组,
那么我们解决的就是一个矩形区域的所有的数的和。我感觉很显然啊。
下面贴上代码:
int sum(int x,int y)
{
int ret = 0;
for(int i = x;i > 0;i -= lowbit(i))
for(int j = y;j > 0;j -= lowbit(j))
ret += c[i][j];
return ret;
}
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))
c[i][j] += val;
}

浙公网安备 33010602011771号