【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

5 6
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

45

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】玉蟾宫 单调栈相关推荐

  1. 洛谷P4147 玉蟾宫(单调栈解决)

    题目 题目链接 题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N\times ...

  2. bzoj 3039 玉蟾宫 单调栈

    预处理出每个点向上扩展的高度,对于每一行维护单调递增的栈,在弹出元素的时候统计答案. #include<iostream> #include<cstdio> #include& ...

  3. bzoj3039 玉蟾宫【单调栈】

    解题思路: 枚举每一行作为矩形的底,h[j]表示第j列向上延伸的最多的1,再用两个单调栈维护每列向左和向右第一个h值比它小的列l[j],r[j],那么矩形面积即是h[j]*(r[j]-l[j]-1). ...

  4. bzoj3039 玉蟾宫

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 606  Solved: 367 [Submit][Status][Discuss] ...

  5. [BZOJ3039]玉蟾宫(悬线法)

    题目描述 传送门 题解 悬线法求最大全0子矩形模板题. h(i,j)表示点(i,j)悬线的最长长度,l(i,j)和r(i,j)分别表示点(i,j)的悬线能到h(i,j)这个长度的左右端点的限制. 预处 ...

  6. 【BZOJ-30391057】玉蟾宫棋盘制作 悬线法

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 753  Solved: 444 [Submit][Status][Discuss] ...

  7. 刷题总结——玉蟾宫(bzoj3039单调栈)

    题目: Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 这片土地被分成N*M个格子,每个格子里写着' ...

  8. 洛谷 P4147 玉蟾宫【悬线法/单调栈】

    题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N×MN\times MN×M ...

  9. 【BZOJ】3039: 玉蟾宫(DP/单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3039 每次看到我的提交都有点淡淡的忧伤T_T.. 看到此题我想到用前缀和维护点ij向左和向上能拓展的 ...

最新文章

  1. python androidhelper kivy_顶SLA4、QPython学习笔记
  2. Eclipse + Apache Axis2 发布RESTful WebService(一)基础知识
  3. Matplotlib(三) rcParams 自定义样式控制
  4. android通过c调用shmat函数,编译可在Android上运行的qemu user mode
  5. 源代码 到 可执行程序的过程
  6. 【LeetCode】49. Group Anagrams
  7. java实现【国密SM4】加密解密-CBC模式
  8. java biginteger相比_java Biginteger类
  9. 韩犯罪团伙雇朝鲜***从中国发动***
  10. 多线程01,线程基础知识
  11. Lomboz插件的介绍 下载 安装 问题
  12. python通过opc读plc实例_python调用openopc读写plc
  13. 装黑苹果的那些事儿(以ThinkpadE540为例)
  14. 数学建模:线性规划—奶制品的生产销售计划模型 (Python 求解)
  15. 认证理论与技术——身份认证技术
  16. 月薪40K+银行测试经理,自动化测试实践经验分享
  17. java毕业设计_基于android的二手书城app的设计与实现
  18. linux学习 - 如何确定是否是 Centos 系统
  19. 全国计算机二级考试试题
  20. Excel常用公式-关联匹配类

热门文章

  1. HANA常用语法(持续更新)
  2. C++ primer 学习笔记
  3. mfc编程 孙鑫_MFC(ActiveX编程,孙鑫C++第十八讲笔记整理)
  4. 身边35岁程序员如何建立起技术护城河?
  5. python连接数据库设置编码格式_Python连接mssql数据库编码问题解决方法
  6. 据起码科学常识推翻5千年“常识”:没最大自然数
  7. 16年老股民,转入外汇市场,炒外汇为什么要用EA?
  8. b2c电商平台建设不能忽略了这些
  9. 晒晒我历年双十一的清单!
  10. 从UQ、3Q大战看当今互联网格局