题目:给你一个n*n的01矩阵,求里面最大的1组成的矩形的米娜及。

分析:dp。单调队列。UVa 1330同题,仅仅是输入格式变了。

我们将问题分解成最大矩形。即求解以k行为底边的图形中的最大矩形。然后合并。求最大的矩形。

          

            预处理: 求出以每行为底边的每一列从底边開始向上的最大连续1的高度MaxH。

O(N^2) ;

dp:对于每一层底边。我们利用单调队列求解出本行的最大矩形。 O(N)。

关于单调队列的求解分析,可參照zoj1985的题解;

整体时间:T(N) = O(N^2)+O(N)*O(N) = O(N^2)。

说明:注意数据读入格式。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio> using namespace std; char maps[30][30];
char Maps[30][30];
int MaxH[30][30];
int L[30],R[30];
int MUQ[30]; int main()
{
int T;
scanf("%d",&T);getchar();
for (int t = 1 ; t <= T ; ++ t) {
scanf("%s",maps[0]);
int n = strlen(maps[0]);
for (int i = 1 ; i < n ; ++ i)
scanf("%s",maps[i]);
for (int i = 1 ; i <= n ; ++ i)
for (int j = 1 ; j <= n ; ++ j)
Maps[i][j] = maps[i-1][j-1]; //计算每条底边上的每列高度
memset(MaxH, 0, sizeof(MaxH));
for (int i = 1 ; i <= n ; ++ i)
for (int j = 1 ; j <= n ; ++ j)
if ( Maps[i][j] == '1' )
MaxH[i][j] = MaxH[i-1][j]+1;
else
MaxH[i][j] = 0; for (int i = 1 ; i <= n ; ++ i)
MaxH[i][0] = MaxH[i][n+1] = -1; int MaxV = 0;
for (int i = 1 ; i <= n ; ++ i) {
//计算每一个点的左边界
int tail = 0;
MUQ[0] = 0;
for (int j = 1 ; j <= n+1 ; ++ j) {
while (tail >= 0 && MaxH[i][MUQ[tail]] > MaxH[i][j])
R[MUQ[tail --]] = j;
MUQ[++ tail] = j;
}
//计算每一个点的右边界
tail = 0;
MUQ[0] = n+1;
for (int j = n ; j >= 0 ; -- j) {
while (tail >= 0 && MaxH[i][MUQ[tail]] > MaxH[i][j])
L[MUQ[tail --]] = j;
MUQ[++ tail] = j;
}
//求解
for (int j = 1 ; j <= n ; ++ j) {
int Temp = MaxH[i][j]*(R[j]-L[j]-1);
if (MaxV < Temp)
MaxV = Temp;
}
}
printf("%d\n",MaxV);
if (t < T) printf("\n");
} return 0;
}

UVa 836 - Largest Submatrix的更多相关文章

  1. UVa 10667 - Largest Block

    题目大意:这个也是和UVa 836 - Largest Submatrix差不多,修改一下数据就可以套用代码的. #include <cstdio> #include <cstrin ...

  2. Largest Submatrix(动态规划)

    Largest Submatrix Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. POJ-3494 Largest Submatrix of All 1’s (单调栈)

    Largest Submatrix of All 1’s Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 8551   Ac ...

  4. hdu 2870 Largest Submatrix(平面直方图的最大面积 变形)

    Problem Description Now here is a matrix with letter 'a','b','c','w','x','y','z' and you can change ...

  5. Largest Submatrix of All 1’s

    Given a m-by-n (0,1)-matrix, of all its submatrices of all 1’s which is the largest? By largest we m ...

  6. codeforces 407D Largest Submatrix 3

    codeforces 407D Largest Submatrix 3 题意 找出最大子矩阵,须满足矩阵内的元素互不相等. 题解 官方做法 http://codeforces.com/blog/ent ...

  7. Largest Submatrix of All 1’s(思维+单调栈)

    Given a m-by-n (0,1)-matrix, of all its submatrices of all 1's which is the largest? By largest we m ...

  8. POJ 3494 Largest Submatrix of All 1’s 单调队列||单调栈

    POJ 3494 Largest Submatrix of All 1’s Description Given a m-by-n (0,1)-matrix, of all its submatrice ...

  9. POJ - 3494 Largest Submatrix of All 1’s 单调栈求最大子矩阵

    Largest Submatrix of All 1’s Given a m-by-n (0,1)-matrix, of all its submatrices of all 1’s which is ...

随机推荐

  1. OpenVPN莫名其妙断线的问题及其解决

    1.问题 不得不说,这是一个OpenVPN的问题,该问题几乎每个使用OpenVPN的人都碰到过,也有很多人在网上发问,然而一直都没有人能给出解决办法,甚至很多帖子上表示因为这个问题而放弃了使用Open ...

  2. Maxiee的Vim入门日记(4)——安装windows下的Cscope

    Maxiee今天又学到了一个插件——Cscope.Cscope 是一款用于查看大型工程中的代码的软件.它使用方便,支持快速查找 C Symbol.function 等在工程中所有出现的位置,而不用自己 ...

  3. Qt Assistant 的配置文件qhp--->qch 和qhcp--->qhc详解与生成

      Qt Assistant 这个exe文件可以被我们利用到我们自己的程序为我们添加help,是一个文档浏览器,它的搜索功能,还有最主要的就是他可以让客户自己定义自己索要显示的文档,也就是qch文档. ...

  4. Margin是什么?

    Margin是什么 CSS 边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时改变所有的外边距.——W3School 边界,元素周围生 ...

  5. SOLR使用手册之操作collection

    一.Collections API  参考:https://cwiki.apache.org/confluence/display/solr/Collections+API 因为API比较多,我就不一 ...

  6. OutputCache各参数的说明

    OutputCache各参数的说明 Duration 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location Location当被设置为 ...

  7. UIView的常用方法

    bringSubviewToFront: 把指定的子视图移动到顶层 - (void)bringSubviewToFront:(UIView *)view 参数 view 需要移到顶层的视图 conve ...

  8. spring cuowu

    spring常见错误总结 在学习spring过程中遇见了种种不同的异常错误,这里做了一下总结,希望遇见类似错误的同学们共勉一下. 1. 错误一 Error creating bean with nam ...

  9. Qwt 折线图 波形图 柱状图示例效果

    Qwt 目录下有不少 example,为了快速找到想要研究使用的例子,特意把所有例子的示例效果截图下来窗口标题即是 example 下的目录名称

  10. M - Candy Sharing Game

    Description A number of students sit in a circle facing their teacher in the center. Each student in ...