hihocoder[Offer收割]编程练习赛41:01间隔矩阵(单调栈求最大子矩形面积)
来源:互联网 发布:linux c 创建文件夹 编辑:程序博客网 时间:2024/06/05 15:47
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
5 7 01010101000101010101010101010101010
- 样例输出
21
描述
给定一个N × M的01矩阵,小Hi希望从中找到一个01间隔的子矩阵,并且子矩阵的面积越大越好。
例如对于
0101010
1000101
0101010
1010101
0101010
在右侧有一个5 × 4的01间隔子矩阵,在下方有一个3 × 7的01间隔子矩阵。
输入
第一行包含两个整数N和M。
以下N行M列包含一个N × M的01矩阵。
对于30%的数据,1 ≤ N, M ≤ 250
对于100%的数据,1 ≤ N, M ≤ 2000
输出
输出最大的01间隔子矩阵的面积。
#include<bits/stdc++.h>using namespace std;const int MAX=1e6;const int MOD=1e9+7;typedef long long ll;char s[3000][3000];int d[3000][3000];struct lenka{ int h,tmp;};int main(){ int n,m; cin>>n>>m; for(int i=0;i<n;i++)scanf("%s",s[i]); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(i==0||s[i][j]==s[i-1][j])d[i][j]=1; else d[i][j]=d[i-1][j]+1; } } int ans=0; deque<lenka>p; for(int i=n-1;i>=0;i--) { for(int j=0;j<m;j++) { if(j==0||s[i][j]==s[i][j-1]) { p.clear(); p.push_front((lenka){d[i][j],1}); continue; } if(p.empty()||p.front().h<=d[i][j])p.push_front((lenka){d[i][j],1}); else { int tmp=0; while(!p.empty()&&p.front().h>d[i][j]) { tmp+=p.front().tmp; ans=max(ans,p.front().h*tmp); p.pop_front(); } p.push_front((lenka){d[i][j],tmp+1}); } } int tmp=0; while(!p.empty()) { tmp+=p.front().tmp; ans=max(ans,p.front().h*tmp); p.pop_front(); } } cout<<ans<<endl; return 0;}
阅读全文
1 0
- hihocoder[Offer收割]编程练习赛41:01间隔矩阵(单调栈求最大子矩形面积)
- hihocoder [Offer收割]编程练习赛19
- hihocoder [Offer收割]编程练习赛24
- 【hihocoder [Offer收割]编程练习赛9 D】【简单DP】矩阵填数
- [Offer收割]编程练习赛13 hihocoder 1504 (矩阵快速幂)
- [Offer收割]编程练习赛1 hihocoder 1268 九宫 (DFS)
- [Offer收割]编程练习赛2 hihocoder 1273 (DFS + 状压)
- hihoCoder[Offer收割]编程练习赛2题目解析
- hihoCoder 1285 [Offer收割]编程练习赛3-3
- hihoCoder[Offer收割]编程练习赛3题目解析
- hihoCoder[Offer收割]编程练习赛1题目解析
- hihocoder[Offer收割]编程练习赛3及参考
- hihocoder[Offer收割]编程练习赛5及参考
- hihocoder[Offer收割]编程练习赛6及参考
- hihocoder-- 热门号码([Offer收割]编程练习赛37)
- [Offer收割]编程练习赛40 题目3 : 01间隔方阵
- HiHoCoder [Offer收割]编程练习赛6 C. 图像算子(高斯消元小数版)
- hihoCoder [Offer收割]编程练习赛8 小Ho的强迫症 (裴蜀定理)
- BZOJ1934 [Shoi2007]Vote 善意的投票 【最小割】
- RSelenium包抓取豆瓣电影(模拟滚动条)
- 卸载vs2015,vs2013的方法
- pdfkit报错:Exit with code 1 due to network error: ContentNotFoundError
- 第五章 ALDS1_4_A:Linear Search 线性搜索
- hihocoder[Offer收割]编程练习赛41:01间隔矩阵(单调栈求最大子矩形面积)
- Mysql更改数据库和表编码
- 2017淘宝年度 “骗钱”文案合集:让你不停买买买
- json初识
- 输出0~N的所有数
- 什么样的产品,才是「坚不可摧」
- 【操作系统】进程调度与同步
- 去这些公司工作,你会成长更快!提前拿offer,可过年后入职!
- mysql安装(yum源)