二维树状数组
二维树状数组:同样不要忘记c的初始化,modify 的功能是改变元素(x, y),sum的功能则是求从元素(1, 1)开始到(x, y)的总和,同样,可以求出任意一个子矩阵内的所有元素之和,即sum(x2, y2) - sum(x1-1, y2) - sum(x2, y1-1) + sum(x1-1, y1-1)
int lowbit( int x )
{
return x&(-x);
}
void modify( int x, int y, int delta )
{
inti,j;
for(i=x; i<=N; i+=lowbit(i))
{
for(j=y; j<=N; j+=lowbit(j))
{
c[i][j]+=delta;
}
}
}
int sum( int x, int y )
{
int res=0,i,j;
for(i=x; i>0; i-=lowbit(i))
{
for(j=y; j>0; j-=lowbit(j))
{
res+=c[i][j];
}
}
return res;
}
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。