## 题解

w x y z  可以各自 变成a ,b c 中的几种， 那么只需要考虑矩阵由 a, b 或 c 构成就可以了。

## 代码

``` #include<cstring>
#include<algorithm>
#include<cstdio>
#include<stack>
#define rep(i,a,b) for( int i = (a); i <= (b); ++i )
#define per(i,a,b) for( int i = (a); i >= (b); --i )
using namespace std;

const int N = 1e3 + ;

char s[N][N];

int n, m, mp[N][N], ans, h[N], pre[N], nxt[N];

stack<int> st;

void cal() {
memset(h, , sizeof(h));
rep( i, , n ) {
rep( j, , m )
if( mp[i][j] ) h[j]++;
else h[j] = ;
while( st.size() ) st.pop();
rep( j, , m ) {
int pr = ;
while( !st.empty() ) {
pr = st.top();
if( h[pr] >= h[j] ) st.pop();
else break;
}
st.push(j);
pre[j] = pr;
}

while( st.size() ) st.pop();
per( j, m,  ) {
int nt = m + ;
while( !st.empty() ) {
nt = st.top();
if( h[nt] >= h[j] ) st.pop();
else break;
}
st.push(j);
nxt[j] = nt;
}
rep( j, , m ) {
int len = nxt[j] - pre[j] - ;
ans = max( ans, len * h[j] );
}
}
}

int main()
{
while( scanf("%d%d",&n,&m) ==  ) {
ans = ;
rep( i, , n ) scanf("%s",s[i] + );
rep( i, , n ) rep( j, , m ) {
if( s[i][j] == 'w' || s[i][j] == 'y' || s[i][j] == 'z' || s[i][j] == 'a' ) mp[i][j] = ;
else mp[i][j] = ;
}
cal();
rep( i, , n ) rep( j, , m ) {
if( s[i][j] == 'w' || s[i][j] == 'x' || s[i][j] == 'z' || s[i][j] == 'b' ) mp[i][j] = ;
else mp[i][j] = ;
}
cal();
rep( i, , n ) rep( j, , m ) {
if( s[i][j] == 'x' || s[i][j] == 'y' || s[i][j] == 'z' || s[i][j] == 'c' ) mp[i][j] = ;
else mp[i][j] = ;
}
cal();
printf("%d\n", ans);
}
return ;
}```

## hdu2870 Largest Submatrix 单调栈的更多相关文章

1. HDU 2870 Largest Submatrix (单调栈)

http://acm.hdu.edu.cn/showproblem.php? pid=2870 Largest Submatrix Time Limit: 2000/1000 MS (Java/Oth ...

2. HDU2870 Largest Submatrix

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

3. poj 2559 Largest Rectangle(单调栈)

Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26549 ...

4. POJ-3494 Largest Submatrix of All 1’s （单调栈）

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

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. 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 ...

7. [POJ2559&amp;POJ3494] Largest Rectangle in a Histogram&amp;Largest Submatrix of All 1’s 「单调栈」

Largest Rectangle in a Histogram http://poj.org/problem?id=2559 题意:给出若干宽度相同的矩形的高度(条形统计图),求最大子矩形面积 解题 ...

8. 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 ...

9. SPOJ MINSUB - Largest Submatrix（二分+单调栈）

http://www.spoj.com/problems/MINSUB/en/ 题意:给出一个n*m的矩阵M,和一个面积k,要使得M的子矩阵M'的最小元素最大并且面积大于等于k,问子矩阵M'的最小元素 ...

## 随机推荐

1. Makefile

原文链接:http://www.orlion.ga/816/ 一.基本规则 对于一个拥有多个文件的c项目,编译时可能是这样的指令: gcc main.c stack.c -o main 如果编译之后又 ...

2. 源码升级安装python

3. IntelliJ IDEA 12.0 +Maven 初使用 - WEB项目的建立

新建项目 1.Fiew菜单 - New Project,选择Maven Module项,输入Project name,选择项目所在的路径,选择SDK,其余默认即可,点击Next按钮

4. js继承理解（有引用）

具体栗子:http://www.cnblogs.com/ayqy/p/4471638.html(地下为自己理解总结,可能晦涩,链接详细) 1.父类实例赋予子类原型. 2.利用子类函数引用 父类.cal ...

5. 在VS中编译C++静态库以及使用的方法

6. android 使用Activity做窗口弹出（模拟Dialog）

我们下面使用Activity,模拟一个dialog: 首先看布局: <?xml version="1.0" encoding="utf-8"?> & ...

7. java中的TreeMap如何顺序按照插入顺序排序

8. codeforces 768D Jon and Orbs

题目链接:http://codeforces.com/problemset/problem/768/D 令\$f[i][j]\$表示当前产生过了\$i\$个球,产生过了\$j\$个不同的球的概率. \${Ans_i ...

9. torchnet package (1)

torchnet package (1) torchnet torchnet torchnet是用于torch的代码复用和模块化编程的框架,主要包含四个类 Dataset 以不同的方式对数据进行预处理 ...

10. 接口文档管理工具-Postman、Swagger、RAP（转载）

接口文档管理工具-Postman.Swagger.RAP 转自:http://www.51testing.com/html/10/n-3715910.html 在项目开发测试中,接口文档是贯穿始终的. ...