如果你用倍增写树上差分6pts
查看原帖
如果你用倍增写树上差分6pts
465055
1004779564bzbjj楼主2024/8/11 17:02

可能是因为你在写倍增数组时把循环搞反了位置。

具体如下:

错误代码:

	for(int i=1;i<=n;i++){
		for(int j=1;j<=23;j++){
			int p=fa[i][j-1];
			fa[i][j]=fa[p][j-1];
		}
	}

这样会导致很多点的2^k级祖先被误判为0

正确代码:

	for(int j=1;j<=23;j++){
		for(int i=1;i<=n;i++){
			int p=fa[i][j-1];
			fa[i][j]=fa[p][j-1];
		}
	}

只得六分的可能错误有非常多,应该只有我会犯这种低级错误吧

2024/8/11 17:02
加载中...