博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P4147 玉蟾宫
阅读量:4485 次
发布时间:2019-06-08

本文共 1839 字,大约阅读时间需要 6 分钟。

洛谷 P4147 玉蟾宫

Description

  • 这片土地被分成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

Data Size

  • 对于50%的数据,1<=N,M<=200

    对于100%的数据,1<=N,M<=1000

题解:

  • 单调栈。
  • emmmm…….每次加入一行,一行一行地添加。每添加一行就做一遍“直方图中的最大矩形”。
  • 复杂度是O(nm),欸刚好。
#include 
#include
#include
#define N 1005#define inf 0x7fffffffusing namespace std;struct Node {int val, pos;};int n, m, ans = -inf;int h[N], l[N], r[N];int a[N][N];int main(){ cin >> n >> m; for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) { char c[3]; scanf("%s", c); if(c[0] == 'R') a[i][j] = 1; else a[i][j] = 2; } for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) if(a[i][j] == 1) h[j] = 0; else h[j]++; stack
stk1, stk2; stk1.push((Node){-inf, 0}); for(int j = 1; j <= m; j++) { while(stk1.top().val >= h[j]) stk1.pop(); l[j] = stk1.top().pos + 1; stk1.push((Node){h[j], j}); } stk2.push((Node){-inf, m + 1}); for(int j = m; j >= 1; j--) { while(stk2.top().val >= h[j]) stk2.pop(); r[j] = stk2.top().pos - 1; stk2.push((Node){h[j], j}); } for(int j = 1; j <= m; j++) { int tmp = h[j] * (r[j] - l[j] + 1); ans = max(ans, tmp); } } cout << 3 * ans; return 0;}

转载于:https://www.cnblogs.com/BigYellowDog/p/11439341.html

你可能感兴趣的文章
【导图控】各软件开发版本详解
查看>>
HDU 1533 Going home
查看>>
Extjs面板和布局初探
查看>>
箭头函数
查看>>
SharePoint【ECMAScript对象模型系列】-- 11. Enable/Disable Ribbon上的Button
查看>>
C#委托-怎样理解C#中“委托”的含义和用途
查看>>
Spring数据访问1 - 数据源配置及数据库连接池的概念
查看>>
setting.xml配置详解
查看>>
工作笔记——使用Jest时遇到的一些问题
查看>>
jQuery 遍历--siblings() 方法、each() 方法
查看>>
window系统下调度数据库类型资源库中的kettle job
查看>>
10、小易记单词--2017网易春招
查看>>
monkey 命令详解
查看>>
Scrapy XPath语法
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (8) -----第二章 实体数据建模基础之继承关系映射TPT...
查看>>
图像预处理
查看>>
16个Web开发的IDE
查看>>
Oracle KEEP的用法
查看>>
Java动态代理与Cglib库
查看>>
Hebbian学习规则 1神经元 简单实现
查看>>