zoukankan      html  css  js  c++  java
  • POJ 3494 Largest Submatrix of All 1’s(最大子图形)

    【题目链接】 http://poj.org/problem?id=3494

    【题目大意】

      在01矩阵中求最大全1子矩形

    【题解】

      在处理每个点的时候,继承上一个点等高度下的左右最大扩展,
      计算在该层的左右最大扩展,然后对于每个点更新答案即可。

    【代码】

    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int N=2010;
    int i,j,n,m,ans,l[N],r[N],h[N],lmax,rmax,a[N][N];
    int main(){
        while(~scanf("%d%d",&n,&m)){
            ans=0;
            memset(h,0,sizeof(h));
            for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);
            for(int i=1;i<=m;i++)l[i]=1,r[i]=m;
            for(int i=1;i<=n;i++){
                for(lmax=j=1;j<=m;j++)if(a[i][j]){
                    h[j]++;
                    if(lmax>l[j])l[j]=lmax;
                }else h[j]=0,l[j]=1,r[j]=m,lmax=j+1;
                for(rmax=j=m;j;j--)if(a[i][j]){
                    if(rmax<r[j])r[j]=rmax;
                    if((r[j]-l[j]+1)*h[j]>ans)ans=(r[j]-l[j]+1)*h[j];
                }else rmax=j-1;
            }printf("%d
    ",ans);
        }return 0;
    }
  • 相关阅读:
    标签,css,排版
    浏览器的内核
    焦点事件
    cookie
    浏览器的行为
    百叶窗分析
    水仙花数
    递归函数
    拖拽的问题解决
    正则的具体
  • 原文地址:https://www.cnblogs.com/forever97/p/poj3494.html
Copyright © 2011-2022 走看看