【BZOJ3039】玉蟾宫 单调栈
【BZOJ3039】玉蟾宫
Description
有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。
这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。
现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着'F'并且面积最大。
但是rainbow和freda的OI水平都弱爆了,找不出这块土地,而蓝兔也想看freda卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面积为S,它们每人给你S两银子。
Input
第一行两个整数N,M,表示矩形土地有N行M列。
接下来N行,每行M个用空格隔开的字符'F'或'R',描述了矩形土地。
Output
输出一个整数,表示你能得到多少银子,即(3*最大'F'矩形土地面积)的值。
Sample Input
R F F F F F
F F F F F F
R R R F F F
F F F F F F
F F F F F F
Sample Output
HINT
对于50%的数据,1<=N,M<=200
对于100%的数据,1<=N,M<=1000
题解:这题就想对于每一行都进行一次询问,然后变成每个点都有一个高度,求组成的最大矩形面积。
具体地,我们对于每个点都维护一个height[i][j]表示i向下最多有多少格是F。那么枚举每一行,然后用单调栈维护每个点左面和右面height第一个比它小的,然后用这个形成的矩形更新答案即可。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n,m,ans,top;
char str[5];
int h[1010][1010],ls[1010],rs[1010],st[1010];
int main()
{scanf("%d%d",&n,&m);int i,j;for(i=1;i<=n;i++) for(j=1;j<=m;j++){scanf("%s",str);if(str[0]=='F') h[i][j]=h[i-1][j]+1;}for(i=1;i<=n;i++){for(top=0,j=1;j<=m;j++){while(top&&h[i][st[top]]>=h[i][j]) top--;ls[j]=st[top],st[++top]=j;}for(top=0,j=m;j>=1;j--){while(top&&h[i][st[top]]>=h[i][j]) top--;rs[j]=(!top)?m+1:st[top],st[++top]=j;ans=max(ans,(rs[j]-ls[j]-1)*h[i][j]);}}printf("%d",ans*3);return 0;
}
转载于:https://www.cnblogs.com/CQzhangyu/p/7691085.html
【BZOJ3039】玉蟾宫 单调栈相关推荐
- 洛谷P4147 玉蟾宫(单调栈解决)
题目 题目链接 题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N\times ...
- bzoj 3039 玉蟾宫 单调栈
预处理出每个点向上扩展的高度,对于每一行维护单调递增的栈,在弹出元素的时候统计答案. #include<iostream> #include<cstdio> #include& ...
- bzoj3039 玉蟾宫【单调栈】
解题思路: 枚举每一行作为矩形的底,h[j]表示第j列向上延伸的最多的1,再用两个单调栈维护每列向左和向右第一个h值比它小的列l[j],r[j],那么矩形面积即是h[j]*(r[j]-l[j]-1). ...
- 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向左和向上能拓展的 ...
最新文章
- python androidhelper kivy_顶SLA4、QPython学习笔记
- Eclipse + Apache Axis2 发布RESTful WebService(一)基础知识
- Matplotlib(三) rcParams 自定义样式控制
- android通过c调用shmat函数,编译可在Android上运行的qemu user mode
- 源代码 到 可执行程序的过程
- 【LeetCode】49. Group Anagrams
- java实现【国密SM4】加密解密-CBC模式
- java biginteger相比_java Biginteger类
- 韩犯罪团伙雇朝鲜***从中国发动***
- 多线程01,线程基础知识
- Lomboz插件的介绍 下载 安装 问题
- python通过opc读plc实例_python调用openopc读写plc
- 装黑苹果的那些事儿(以ThinkpadE540为例)
- 数学建模:线性规划—奶制品的生产销售计划模型 (Python 求解)
- 认证理论与技术——身份认证技术
- 月薪40K+银行测试经理,自动化测试实践经验分享
- java毕业设计_基于android的二手书城app的设计与实现
- linux学习 - 如何确定是否是 Centos 系统
- 全国计算机二级考试试题
- Excel常用公式-关联匹配类