社区讨论

80pts 求调

P15289「YLLOI-R3-T4」止战之殇参与者 4已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mljge6hd
此快照首次捕获于
2026/02/12 20:47
7 天前
此快照最后确认于
2026/02/15 13:45
4 天前
查看原帖
逆天80
WA on #4 QWQ
CPP
# include<bits/stdc++.h>

# define int long long
# define N 1000005

using namespace std;

int n, a, d, l, r, ans, ansl, ansr;
int b[N], f[N], vis[N];

inline void dfs(int x) {
	vis[x] = 1;
	if (x < l) ansl += f[x];
	else if (x > r) ansr += f[x];
	else ans += f[x];
	if (f[x - 2] && ! vis[x - 2]) dfs(x - 2);
	if (f[x - 1] && ! vis[x - 1]) dfs(x - 1);
	if (f[x + 1] && ! vis[x + 1]) dfs(x + 1);
	if (f[x + 2] && ! vis[x + 2]) dfs(x + 2);
}

signed main() {
	cin.tie(0) -> ios :: sync_with_stdio(false);
	cin >> n >> a >> d;
	n --;
	for (int i = 1; i <= n; i ++)
		cin >> b[i];
	for (int i = 1; i <= n; i ++)
		f[i] = max(0ll, (b[i] - 2) / (d << 1));
//		, cout << f[i] << " ";
//	cout << "\n";
	l = a, r = a;
	while (l >= 1 && (f[l] > 1 || (f[l - 1] != 0 && f[l + 1] != 0))) l --;
	while (r <= n && (f[r] > 1 || (f[r - 1] != 0 && f[r + 1] != 0))) r ++;
	dfs(a);
//	for (int i = l + 1; i < r; i ++) ans += f[i];
//	for (int i = l; i >= 1; i --)
//		if (f[i + 1] || f[i + 2] || i + 1 == a || i + 2 == a)
//			ansl += f[i];
//		else if (l - i > 2)
//			break;
//	for (int i = r; i <= n; i ++)
//		if (f[i - 1] || f[i - 2] || i - 1 == a || i - 2 == a)
//			ansr += f[i];
//		else if (i - r > 2)
//			break;
	cout << ans + max(ansl, ansr) << "\n";
//	cout << l << " " << r << "\n";
//	cout << ans << " " << ansl << " " << ansr << "\n";
	return 0;
}

回复

11 条回复,欢迎继续交流。

正在加载回复...