社区讨论
80pts 求调
P15289「YLLOI-R3-T4」止战之殇参与者 4已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mljge6hd
- 此快照首次捕获于
- 2026/02/12 20:47 7 天前
- 此快照最后确认于
- 2026/02/15 13:45 4 天前
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 条回复,欢迎继续交流。
正在加载回复...