关于今晚 abc 的 D
  • 板块学术版
  • 楼主Strelitzia_
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/5/20 21:57
  • 上次更新2023/10/23 15:11:54
查看原帖
关于今晚 abc 的 D
676638
Strelitzia_楼主2023/5/20 21:57

人调傻了。赛后看了别人的代码,去掉一个 abs 然后就过了。具体来说,我的赛时代码:

int n, m, d, a[N], b[N], ans = -1;

signed main() {

	n = read(), m = read(), d = read(), b[0] = INF;
	for (int i = 1; i <= n; i++) a[i] = read();
	for (int i = 1; i <= m; i++) b[i] = read();
	std::sort(a + 1, a + n + 1);
	std::sort(b + 1, b + m + 1);
	for (int i = 1; i <= n; i++) {
		int id = std::upper_bound(b + 1, b + m + 1, a[i] + d) - b - 1;
		if (abs(a[i] - b[id]) <= d && id >= 1 && id <= m) ans = std::max(ans, a[i] + b[id]);
	}
	printf("%lld", ans);

}

然后把最后一个循环里的 if 中的 abs 去掉,其他啥也不动,就可以过了,否则错 20 个点。

有无好心人解释下题意或者这样做是不是正确的/kel

2023/5/20 21:57
加载中...