题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3039

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

Source

Poetize4

题目大意:给出个n×mn\times m的矩阵,求最大子矩形面积×3\times 3

首先要-1s
裸的悬线法,不懂悬线法的同学可以去看一下王知昆的《浅谈用极大化思想解决最大子矩形问题》
定义li,jl_{i,j}表示一个点向左最多延伸多少,ri,jr_{i,j}表示一个点向右最多延伸多少,hi,jh_{i,j}表示最多向上延伸多少,ansans就是就是最大的l×r×hl\times r \times h

代码如下:

#include<algorithm>
#include<ctype.h>
#include<cstdio>
#define int long long
#define N 1020
using namespace std;
inline int read(){char c=getchar();int x=0;while(!isdigit(c)) c=getchar();while(isdigit(c)) {x=(x<<3)+(x<<1)+c-'0';c=getchar();}return x;
}
inline char readc(){char c=getchar();while(!isalpha(c)) c=getchar();return c;
}
bool b[N][N];
int l[N][N],r[N][N],h[N][N],ans,n,m;
char x;
main(){n=read();m=read();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){x=readc();l[i][j]=r[i][j]=h[i][j]=b[i][j]=(x=='F'?1:0);}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) if(b[i][j+1]) l[i][j+1]=l[i][j]+1;for(int j=m;j>=1;j--) if(b[i][j-1]) r[i][j-1]=r[i][j]+1;}for(int i=2;i<=n;i++)for(int j=1;j<=m;j++)if(b[i-1][j]){h[i][j]=h[i-1][j]+1;l[i][j]=min(l[i][j],l[i-1][j]);r[i][j]=min(r[i][j],r[i-1][j]);}else h[i][j]=1;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)ans=max(ans,(l[i][j]+r[i][j]-1)*h[i][j]);printf("%d",ans*3);
return 0;
}

BZOJ[3039]玉蟾宫 悬线法相关推荐

  1. BZOJ 3039: 玉蟾宫( 悬线法 )

    最大子矩阵...悬线法..时间复杂度O(nm) 悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. ----------------------- ...

  2. [P4147 玉蟾宫(悬线法)

    题目链接: P4147 玉蟾宫 题目大意: n ∗ m n∗m n∗m的矩阵,求最大的全 F F F矩阵面积 ∗ 3 *3 ∗3. 思路:悬线法. 参考代码: #include <bits/st ...

  3. bzoj 3039: 玉蟾宫(悬线法)

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

  4. BZOJ 3039 玉蟾宫 最大子矩阵 算♂法②

    题意:链接 方法:最大子矩阵之算♂法② 解析: 首先这道题单调栈DP是肯定能过的,但是一点都不高端! 什么年代了还用这种方式! 所以如何彰显自己是个高端的人呢? 悬线法能满足你的需求! 什么是悬线法? ...

  5. BZOJ 3039: 玉蟾宫

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

  6. BZOJ 3039 玉蟾宫

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

  7. bzoj 3039 玉蟾宫 单调栈

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

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

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

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

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

最新文章

  1. 分享一些国外推广的站点
  2. 《程序员跳槽全攻略》笔记
  3. 有关VUE学习的经验(2)
  4. 腾讯被阿里甩出1万亿!中国互联网公司格局剧变!
  5. 一个箱子的梦想_长葛这中学“建”了一个“梦想厅”……
  6. ueditor 后端配置项没有正常加载,上传插件不能正常使用 UTF8 PHP
  7. 树——二叉树结点的删除与清除
  8. 统计学习方法9—EM算法
  9. formatter function (value,row,index){} 参数的含义
  10. HOJ 2739 The Chinese Postman Problem
  11. ubuntu14.04编译ffmpeg的过程
  12. Xilinx UCF约束语法一
  13. python对数正态分布函数_python生成具有上下限的截断对数正态分布
  14. Java网络象棋游戏(功能版)
  15. flutter 打包apk
  16. selenium闪退
  17. Python的lasso回归分析
  18. 【Python】用Python画小猪佩奇,落叶树和动漫人物
  19. 怎么把视频做成背景html,HTML5设置视频背景的方法介绍
  20. RabbitMQ可靠性投递与高可用架构

热门文章

  1. 计算机主板复位电路的组成,教你认识液晶彩电主板中的复位电路
  2. 学计算机高中选那三科,高中选哪三科最吃香
  3. python爬取小说写入txt_基于python爬取小说章节源代码内容存为文本实现小说下载...
  4. Ubuntu下mysql的配置
  5. Markdown pad2 使用本地图片
  6. python颜值测试器
  7. 简单 Python 快乐之旅之:Python 基础语法之 JSON 专题
  8. PAT 1124 Raffle for Weibo Followers python解法
  9. 短信验证码开发教程 - 4.后端篇
  10. 广义最小二乘法的基本思想是什么_解决异方差问题的方法可行广义最小二乘法fgls法.ppt...