应该是这个讨论版下最独特的错误
查看原帖
应该是这个讨论版下最独特的错误
705702
user100566楼主2024/11/4 15:16

WA on #11

AC

WA 代码:

int solve(vector<int> &path, int ctb2){
	int l = 0, r = 0;
	int distL = 0, distR = diameter, distM = 0;
	int result = 2147483647;
	while(r<(int)path.size()-1){ // 注意这里
		distM += path[r];
		distR -= path[r];
		++r;
		while(distM > s){
			distM -= path[l];
			distL += path[l];
			++l;
		}
		result = min(result, max(distL, distR));
	}
	result = max(result, ctb2);
	return result;
}

AC 代码

int solve(vector<int> &path, int ctb2){
	int l = 0, r = 0;
	int distL = 0, distR = diameter, distM = 0;
	int result = 2147483647;
	while(r<(int)path.size()){ // 注意这里
		distM += path[r];
		distR -= path[r];
		++r;
		while(distM > s){
			distM -= path[l];
			distL += path[l];
			++l;
		}
		result = min(result, max(distL, distR));
	}
	result = max(result, ctb2);
	return result;
}

当时写的时候从 r 自增后合法的角度写了r<(int)path.size()-1,但实际上 r 自增后在后续循环节根本没有用上,只要当前的 r 合法即可,后来下载了 #13 的数据本地验证才查出来。

2024/11/4 15:16
加载中...