zoukankan      html  css  js  c++  java
  • 洛谷 P1681 最大正方形II

    题目传送门

    f[i][j][1/0]表示以(i,j)为右下角,当前格子是1/0的最大答案

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    int n,m,ans,a[1501][1501],f[1501][1501][2];
    
    inline int max(int s,int d) {
        if(s > d) return s;
        return d;
    }
    
    inline int min(int s,int d) {
        if(s < d) return s;
        return d;
    }
    
    int main() {
        scanf("%d%d",&n,&m);
        for(int i = 1;i <= n; i++) 
            for(int j = 1;j <= m; j++)
                scanf("%d",&a[i][j]);
        for(int i = 1;i <= n; i++)
            for(int j = 1;j <= m; j++) {
                if(a[i][j])
                    f[i][j][1] = min(f[i-1][j][0],min(f[i][j-1][0],f[i-1][j-1][1])) + 1;
                else 
                    f[i][j][0] = min(f[i-1][j][1],min(f[i][j-1][1],f[i-1][j-1][0])) + 1;
                ans = max(ans,max(f[i][j][1],f[i][j][0]));
            }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    【NOI2015】荷马史诗
    Codeforces Round #415 (Div. 2)
    Codeforces Round #408 (Div. 2)
    bzoj3230
    poj1743
    poj1226
    bzoj1295
    bzoj1294
    bzoj1296
    bzoj1239
  • 原文地址:https://www.cnblogs.com/lipeiyi520/p/13605070.html
Copyright © 2011-2022 走看看