萌新80分WA求助
查看原帖
萌新80分WA求助
134519
qwq自动机楼主2021/7/5 09:46

80分wa,然而我看不出有什么问题qwq WA了#7#9

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
// f[i][j][0]: (1,1)~(i,j) Smax, (i,j)=black; ~[1]: (1,1)~(i,j) Smax, (i,j)=white
// if (i,j)=black: f[i][j][0]=min(f[i][j-1][1],f[i-1][j][1],f[i-1][j-1][0])+1
// if (i,j)=white: f[i][j][1]=min(f[i][j-1][0],f[i-1][j][0],f[i-1][j-1][1])+1
int f[1510][1510][2];
bool map[1510][1510];
int n, m, ans = -1;
int main()
{
    memset(f, 0, sizeof(f));
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++)
        for (int j = 1, d; j <= m; j++)
        {
            scanf("%d", &d);
            map[i][j] = d;
            f[i][1][0] = f[i][1][1] = f[1][j][0] = f[1][j][1] = 1;
        }
    for (int i = 2; i <= n; i++)
        for (int j = 2; j <= n; j++)
            if (map[i][j])
            {
                f[i][j][1] = min(f[i][j - 1][0], min(f[i - 1][j][0], f[i - 1][j - 1][1])) + 1;
                ans = max(ans, f[i][j][1]);
            }
            else
            {
                f[i][j][0] = min(f[i][j - 1][1], min(f[i - 1][j][1], f[i - 1][j - 1][0])) + 1;
                ans = max(ans, f[i][j][0]);
            }
    printf("%d", ans);
    return 0;
}
2021/7/5 09:46
加载中...