zoukankan      html  css  js  c++  java
  • New Land LightOJ

    New Land LightOJ - 1424

    题意:找出01矩阵中最大的完全由0组成的矩阵。

    方法:

    重点在于转化。

    先预处理(i,j)点向上最长能取到的连续的全0条的长度。然后枚举某一行作为矩阵的最下面一行,就可以把题目转化为LOJ-1083。用那道题的任意一种方法做即可。

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 int a[2010][2010],s1[2010][2010],left[2010],right[2010];
     5 int ans,TT,T,m,n;
     6 int main()
     7 {
     8     int i,j;
     9     scanf("%d",&T);
    10     for(TT=1;TT<=T;TT++)
    11     {
    12         ans=0;
    13         scanf("%d%d",&m,&n);
    14         for(i=1;i<=m;i++)
    15             for(j=1;j<=n;j++)
    16                 scanf("%1d",&a[i][j]);
    17         for(i=1;i<=m;i++)
    18             for(j=1;j<=n;j++)
    19                 if(a[i][j]==1)
    20                     s1[i][j]=0;
    21                 else
    22                     s1[i][j]=s1[i-1][j]+1;
    23         for(i=1;i<=m;i++)
    24         {
    25             for(j=1;j<=n;j++)
    26             {
    27                 left[j]=j;
    28                 while(left[j]>1&&s1[i][left[j]-1]>=s1[i][j])    left[j]=left[left[j]-1];
    29             }
    30             for(j=n;j>=1;j--)
    31             {
    32                 right[j]=j;
    33                 while(right[j]<n&&s1[i][right[j]+1]>=s1[i][j])    right[j]=right[right[j]+1];
    34             }
    35             for(j=1;j<=n;j++)
    36                 ans=max(ans,s1[i][j]*(right[j]-left[j]+1));
    37         }
    38         printf("Case %d: %d
    ",TT,ans);
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    预写式日志WAL
    静态类和单例模式区别
    综合运用(带LCD的机车版)
    sublime插件“C Improved”
    sublime
    红外坦克---综合应用
    Arduino I/O Expansion Shield V7.1
    新版本LM35
    dht11 temperature & humidity sensor v2
    Shiftout Module
  • 原文地址:https://www.cnblogs.com/hehe54321/p/loj-1424.html
Copyright © 2011-2022 走看看