poj 3494 Largest Submatrix of All 1’s(单调栈)
2017-09-13 19:31
555 查看
观察力太水,看没看出来。
参考题解:http://www.hankcs.com/program/algorithm/poj-3494-largest-submatrix-of-all-1s.html
这题可以看成 51nod 1102 面积最大的矩形 这题的加强版,看你能不能看出来这个模型。
00000
00101
01111
这里面含1最多的由1组成的矩形是下边那四个1,就是四个高度为1的矩形。每次输入一行都这样来算一遍就好了。
参考题解:http://www.hankcs.com/program/algorithm/poj-3494-largest-submatrix-of-all-1s.html
这题可以看成 51nod 1102 面积最大的矩形 这题的加强版,看你能不能看出来这个模型。
00000
00101
01111
这里面含1最多的由1组成的矩形是下边那四个1,就是四个高度为1的矩形。每次输入一行都这样来算一遍就好了。
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int MAXN = 2017; int m,n; int h[MAXN],s[MAXN],L[MAXN],R[MAXN]; int solve() { int t = 0; for(int i = 0; i < n; ++i) { while(t > 0 && h[s[t-1]] >= h[i]) t--; if(t == 0) L[i] = 0; else L[i] = s[t-1]+1; s[t++] = i; } t = 0; for(int i = n-1; i >= 0; --i) { while(t > 0 && h[s[t-1]] >= h[i]) t--; if(t == 0) R[i] = n-1; else R[i] = s[t-1]-1; s[t++] = i; } int ret = 0; for(int i = 0; i < n; ++i) ret = max(ret,h[i]*(R[i]-L[i]+1)); return ret; } int main() { int num; while(scanf("%d %d",&m,&n) != EOF) { memset(h,0,sizeof(h)); int res = 0; for(int i = 0; i < m; ++i) { for(int j = 0; j < n; ++j) { scanf("%d",&num); h[j] = num ? h[j]+1 : 0; } res = max(res,solve()); } printf("%d\n",res); } return 0; }
相关文章推荐
- POJ 3494 Largest Submatrix of All 1’s(单调栈||dp)
- POJ 3494 Largest Submatrix of All 1’s 单调栈(数组版)
- POJ-3494 Largest Submatrix of All 1’s(单调栈)
- (POJ 3494)Largest Submatrix of All 1’s (DP、单调栈)
- 2017省选拔(二)poj3494 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(最大全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(最大全1子矩阵)
- poj3494 Largest Submatrix of All 1’s 单调栈+dp
- POJ-3494-Largest Submatrix of All 1’s
- POJ 3494 Largest Submatrix of All 1’s
- 【POJ】3494 - Largest Submatrix of All 1’s 栈
- Largest Submatrix of All 1’s(POJ 3494) 单调栈