POJ 3494 Largest Submatrix of All 1’s(最大子图形)
2017-04-11 20:00
543 查看
【题目链接】 http://poj.org/problem?id=3494
【题目大意】
在01矩阵中求最大全1子矩形
【题解】
在处理每个点的时候,继承上一个点等高度下的左右最大扩展,
计算在该层的左右最大扩展,然后对于每个点更新答案即可。
【代码】
【题目大意】
在01矩阵中求最大全1子矩形
【题解】
在处理每个点的时候,继承上一个点等高度下的左右最大扩展,
计算在该层的左右最大扩展,然后对于每个点更新答案即可。
【代码】
#include <cstdio> #include <cstring> using namespace std; const int N=2010; int i,j,n,m,ans,l ,r ,h ,lmax,rmax,a ; 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\n",ans); }return 0; }
相关文章推荐
- (POJ 3494)Largest Submatrix of All 1’s (DP、单调栈)
- POJ 3494 Largest Submatrix of All 1’s(最大全1子矩阵)
- POJ-3494-Largest Submatrix of All 1’s-还是单调栈
- POJ 3494 Largest Submatrix of All 1’s
- poj 3494 Largest Submatrix of All 1’s(单调栈)
- POJ 3494 Largest Submatrix of All 1’s 单调栈应用 图解+代码详解
- POJ 3494 Largest Submatrix of All 1's 栈的运用 好题
- POJ-3494--Largest Submatrix of All 1’s---单调栈的应用
- poj 3494 Largest Submatrix of All 1’s(单调栈)
- POJ-3494 Largest Submatrix of All 1’s(单调栈)
- POJ 3494 Largest Submatrix of All 1’s
- POJ 3494__Largest Submatrix of All 1’s
- poj 3494 Largest Submatrix of All 1’s
- 【POJ】3494 Largest Submatrix of All 1’s
- POJ3494——Largest Submatrix of All 1’s(栈的应用)
- Largest Submatrix of All 1’s(POJ 3494) 单调栈
- POJ 3494 Largest Submatrix of All 1’s 笔记
- poj3494 Largest Submatrix of All 1’s 单调栈+dp
- POJ 3494 Largest Submatrix of All 1’s(单调栈||dp)
- 2017省选拔(二)poj3494 Largest Submatrix of All 1’s (单调栈+预处理)