『题解』A22743.创意吃鱼法
2025-06-07 20:43:22
发布于:湖南
2阅读
0回复
0点赞
特别注意:该题目内存限制在了128M,所以变量需开小点(蒟蒻第一次提交开太大了
这边是90分代码,MLE一个点,自己看着改吧
#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e3 + 7;
int n, m, ans;
int c[maxn][maxn];
int heng[maxn][maxn];
int shu[maxn][maxn];
int dp1[maxn][maxn];
int dp2[maxn][maxn];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> c[i][j];
if (!c[i][j]) {
heng[i][j] = heng[i][j - 1] + 1;
shu[i][j] = shu[i - 1][j] + 1;
} else {
dp1[i][j] = min(dp1[i - 1][j - 1], min(heng[i][j - 1], shu[i- 1][j])) + 1;
ans = max(ans, dp1[i][j]);
}
}
}
memset(heng, 0, sizeof(heng));
for (int i = 1; i <= n; i++) {
for (int j = m; j >= 1; j--) {
if (!c[i][j]) {
heng[i][j] = heng[i][j + 1] + 1;
} else {
dp2[i][j] = min(dp2[i - 1][j + 1], min(heng[i][j + 1], shu[i - 1][j])) + 1;
ans = max(ans, dp2[i][j]);
}
}
}
cout << ans << endl;
return 0;
}
这里空空如也
有帮助,赞一个