New Land LightOJ - 1424
2018-06-17 21:41:12来源:未知 阅读 ()
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\n",TT,ans); 39 } 40 return 0; 41 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ new初始化与定位new运算符 2020-05-22
- 定位new表达式与显式调用析构函数 2020-04-20
- C++ 中的new和delete理解与实操应用 2020-03-19
- CodeForces 1313D Happy New Year 2020-03-04
- C++的new&delete 2020-02-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash