过不了样例&第一次打二维树状数组来这里
查看原帖
过不了样例&第一次打二维树状数组来这里
1121518
StarsIntoSea楼主2024/10/24 15:11

很多人以前写树状数组可能会这样写:

void update(int x,int k){
	for(;x<=n;x+=lowbit(x)) t[x]+=k;
}

当然,这并没问题。

发现这是二维,于是乎就非常熟练地敲下了以下的的代码:

void update(int c,int x,int y,int k){
	for(;x<=n;x+=lowbit(x))
		for(;y<=n;y+=lowbit(y))
			t[c][x][y]+=k;
}

这样,你的 y 就再也回不去初始的时候了。请改成:

void update(int c,int x,int y,int k){
	for(int i=x;i<=n;i+=lowbit(i))
		for(int j=y;j<=m;j+=lowbit(j))
			t[c][i][j]+=k;
}
2024/10/24 15:11
加载中...