bzoj3039 玉蟾宫【单调栈】
解题思路:
枚举每一行作为矩形的底,h[j]表示第j列向上延伸的最多的1,再用两个单调栈维护每列向左和向右第一个h值比它小的列l[j],r[j],那么矩形面积即是h[j]*(r[j]-l[j]-1)。可以证明最优解一定会被统计。
时间复杂度为O(n2)O(n^2)
#include<bits/stdc++.h>
#define ll long long
using namespace std;int getint()
{int i=0,f=1;char c;for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar());if(c=='-')f=-1,c=getchar();for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0';return i*f;
}const int N=1005;
int n,m,ans;
int a[N][N],h[N],l[N],r[N],sta[N];
char s[2];int main()
{//freopen("lx.in","r",stdin);n=getint(),m=getint();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%s",s);a[i][j]=s[0]=='F'?1:0;}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)h[j]=a[i][j]?h[j]+1:0;sta[0]=0;for(int j=1,top=0;j<=m;j++){while(top&&h[j]<=h[sta[top]])top--;l[j]=sta[top]+1,sta[++top]=j;}sta[0]=m+1;for(int j=m,top=0;j;j--){while(top&&h[j]<=h[sta[top]])top--;r[j]=sta[top]-1,sta[++top]=j;}for(int j=1;j<=m;j++)ans=max(ans,h[j]*(r[j]-l[j]+1));}cout<<ans*3<<'\n';return 0;
}
bzoj3039 玉蟾宫【单调栈】相关推荐
- 【BZOJ3039】玉蟾宫 单调栈
[BZOJ3039]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 这片土地被分成N*M个格 ...
- 洛谷P4147 玉蟾宫(单调栈解决)
题目 题目链接 题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N\times ...
- bzoj 3039 玉蟾宫 单调栈
预处理出每个点向上扩展的高度,对于每一行维护单调递增的栈,在弹出元素的时候统计答案. #include<iostream> #include<cstdio> #include& ...
- bzoj3039 玉蟾宫
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 606 Solved: 367 [Submit][Status][Discuss] ...
- [BZOJ3039]玉蟾宫(悬线法)
题目描述 传送门 题解 悬线法求最大全0子矩形模板题. h(i,j)表示点(i,j)悬线的最长长度,l(i,j)和r(i,j)分别表示点(i,j)的悬线能到h(i,j)这个长度的左右端点的限制. 预处 ...
- 【BZOJ-30391057】玉蟾宫棋盘制作 悬线法
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 753 Solved: 444 [Submit][Status][Discuss] ...
- 刷题总结——玉蟾宫(bzoj3039单调栈)
题目: Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 这片土地被分成N*M个格子,每个格子里写着' ...
- 洛谷 P4147 玉蟾宫【悬线法/单调栈】
题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N×MN\times MN×M ...
- 【BZOJ】3039: 玉蟾宫(DP/单调栈)
http://www.lydsy.com/JudgeOnline/problem.php?id=3039 每次看到我的提交都有点淡淡的忧伤T_T.. 看到此题我想到用前缀和维护点ij向左和向上能拓展的 ...
最新文章
- Oracle分页存储过程
- Connectify错误“Internet Connection Sharing is currently unavailable.”解决方法不要有多重的网桥连接
- python xpath语法-XPath语法和lxml模块(数据提取)
- 基于Python语言使用RabbitMQ消息队列(一)
- delphi刷新界面所选行丢失问题
- rn项目 假如cocoapods_React Native 如何集成到原生IOS项目中?
- c# forbidden.html,c# - google+ api error forbidden 403 - Stack Overflow
- 1-算法 排序 选择排序
- pytorch从ubuntu16.04到win7的迁移(解决)
- STM32工作笔记0099---Pacman常用命令
- 16qam matlab 误码率,16qam的误码率公式
- 捷速pdf修改器如何在pdf中添加附件
- 【Linux的开胃小菜】基于Ubuntu搭建内网DNS服务器
- 国际域名转出与ICANN投诉流程(完结篇)
- html图片指定refere,前端解决第三方图片防盗链的办法 - html referrer 访问图片资源 403 问题...
- 基于JavaGUI的中英文打字训练测试软件设计
- 一度智信:如何提高自己的电商店铺权重
- 视频会议新格局确立 云计算开启技术叠加时代
- python爬虫--第一个爬虫程序
- Ubuntu20修改屏幕亮度