社区讨论
WA on 29求条
CF2194EThe Turtle Strikes Back参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mlkxt8xv
- 此快照首次捕获于
- 2026/02/13 21:42 6 天前
- 此快照最后确认于
- 2026/02/13 21:47 6 天前
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int kMaxN = 1e6 + 5;
int T, n, m;
vector<int> f[kMaxN], g[kMaxN], a[kMaxN];
struct Node {
int mx = -1e18, mx2 = -1e18, p;
void Init() { mx = mx2 = -1e18; }
void Record(int x, int pos) {
if (x >= mx) {
mx2 = mx, mx = x, p = pos;
} else if (x > mx2)
mx2 = x;
}
int Q(int pos) {
return (p != pos ? mx : mx2);
}
} mx[2 * kMaxN];
signed main() {
cin.tie(0)->ios::sync_with_stdio(0);
for (cin >> T; T--;) {
cin >> n >> m;
for (int i = 0; i <= n + 1; i++) {
f[i].resize(m + 2, -1e18);
g[i].resize(m + 2, -1e18);
a[i].resize(m + 2, 0);
}
for (int i = 1; i <= n + m; i++) mx[i].Init();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
if (i == 1 && j == 1) {
f[i][j] = a[i][j];
continue;
}
f[i][j] = max(f[i - 1][j], f[i][j - 1]) + a[i][j];
}
}
for (int i = n; i; i--) {
for (int j = m; j; j--) {
if (i == n && j == m) {
g[i][j] = a[i][j];
continue;
}
g[i][j] = max(g[i + 1][j], g[i][j + 1]) + a[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
mx[i + j].Record(f[i][j] + g[i][j] - a[i][j], i);
// cout << f[i][j] << ' ';
}
// cout << '\n';
}
int mn = 1e18;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
// cout << mx[i + j].Q(i) << ' ';
mn = min(mn, max(f[i][j] + g[i][j] - 3 * a[i][j], mx[i + j].Q(i)));
}
// cout << '\n';
}
cout << mn << '\n';
}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...