BZOJ 3039: 玉蟾宫( 悬线法 )

 最大子矩阵...悬线法..时间复杂度O(nm)

悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. 

------------------------------------------------------------------

#include<bits/stdc++.h>
using namespace std;
#define ok(c) ((c) == 'F' || (c) == 'R')
const int maxn = 1009;
int H[maxn][maxn], L[maxn][maxn], R[maxn][maxn], N, M;
bool F[maxn][maxn];
void Read() {
cin >> N >> M;
for(int i = 0; i < N; i++)
   for(int j = 0; j < M; j++) {
char c = getchar();
for(; !ok(c); c = getchar());
F[i][j] = c == 'F';
   }
}
int main() {
Read();
for(int i = 0; i < N; i++) {
L[i][0] = F[i][0];
for(int j = 1; j < M; j++)
   L[i][j] = F[i][j] ? L[i][j - 1] + 1 : 0;
R[i][M - 1] = F[i][M - 1];
for(int j = M - 2; ~j; j--)
   R[i][j] = F[i][j] ? R[i][j + 1] + 1 : 0;
}
memset(H, 0, sizeof H);
for(int i = 1; i < N; i++)
for(int j = 0; j < M; j++) if(F[i][j] && F[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]);
}
int ans = 0;
for(int i = 0; i < N; i++)
   for(int j = 0; j < M; j++) if(F[i][j])
       ans = max(ans, (H[i][j] + 1) * (L[i][j] + R[i][j] - 1));
cout << 3 * ans << "\n";
return 0;
}

------------------------------------------------------------------ 

3039: 玉蟾宫

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit: 581  Solved: 352
[Submit][Status][Discuss]

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

 

转载于:https://www.cnblogs.com/JSZX11556/p/4715241.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记(37):Python实战编程-yield实现生成器

立即学习:https://edu.csdn.net/course/play/19711/255579?utm_sourceblogtoedu1.yield return generator yield是一个返回的是一个生成器对象&#xff0c;是通过next函数一次一次地进行函数地迭代来获取结果的&#xff0c;而return函数则是将结果返回后&#xff0c;不再与…

Mocha BSM产品亮点——关联事件分析

业务需求与挑战企业经常会遇到下列场景&#xff1a;• 企业某应用&#xff0c;例如&#xff0c;WebSphere Portal Server&#xff0c;已经不可用&#xff0c;是由于应用自身已不可用&#xff1f;还是应用所连接的数据库出了问题&#xff1f;还是应用的LDAP服务不可用&#xff1…

学习笔记(38):Python实战编程-窗体显示

立即学习:https://edu.csdn.net/course/play/19711/343100?utm_sourceblogtoedu GUI&#xff1a;图形用户接口——GUI组件&#xff0c;组件定义&#xff0c;组件布局管理 主体窗口的设置&#xff1a; import tkinter#导入创建窗体的相关模块class Mainwindow():#创建窗口类de…

Tomcat 配置和spring-framework MVC配置简介

Tomcat启动时&#xff0c;先找系统变量CATALINA_BASE&#xff0c;如果没有&#xff0c;则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹&#xff0c;从中读取配置文件。最重要的配置文件&#xff1a;server.xml 。要配置tomcat&#xff0c;基本上了解server.xml&am…

ultra edit ftp帐号管理导入导出方法

在更换电脑或ultra edit新安装时往往需要将原来使用的ftp帐号导入过来&#xff0c;可以在高级-备份/恢复用户定制-选中其他保存备份&#xff0c;拷贝出来然后再导入。 也可以在配置-ftp/sftp中保存&#xff0c;拷贝出来然后在安装好后配置。 步骤1. 导出ftp帐号信息&#xff1a…

学习笔记(41):Python实战编程-按钮

立即学习:https://edu.csdn.net/course/play/19711/343103?utm_sourceblogtoedu 按钮——用于指令的提交作用&#xff0c;如将文本中输入的信息进行提交等 button tkinter.Button(root,text linlianqin,image photo,compound bottom) 创建了一个图片按钮&#xff0c;并且…

学习笔记(42):Python实战编程-pyinstaller程序打包

将程序打包可以使得所有Windows带有python虚拟机的电脑进行使用&#xff0c;打包的内容有代码加外部资源&#xff08;如logo图片等&#xff09; 步骤&#xff1a; 1&#xff09;创建程序的代码 2&#xff09;生成配置文件——用于获得打包的资源&#xff0c;将资源保存在运行程…

透视校正

1、需要解决的问题&#xff1a; 怎么用图像处理的办法将梯形转换为规则的矩形&#xff0c;进行一个视觉的透视校正 2、解决思路&#xff1a; 1&#xff09;先二值化图像&#xff0c;提取其轮廓&#xff08;其中使用到填充&#xff0c;形态学知识&#xff09; 2&#xff09;…

pyinstaller运行时出现TCLError的错误该怎么办?

1)修改代码后需要重新按照以上步骤进行&#xff0c;尤其不能忘记了修改配置文件的datas 2)必须得先pyi-makespec -F *.py指定要打包的程序&#xff0c;再修改配置文件&#xff0c;再pyinstaller -F *.spec程序打包 3&#xff09;确保配置文件已经修改成功&#xff0c;即将以下图…

视觉统计计数方案

1、二值化分割 2、形态学 3、距离变换 4、再进行二值化 4、连通区域计算 输入&#xff1a; 输出&#xff1a;printf&#xff08;"统计玉米粒的个数 contours:%d\n",contours);//contours 17

Filezilla 利用私钥无密码登录

Filezilla是常用的FTP客户端软件&#xff0c;这里介绍一个用私钥进行登录 主机:sftp://yourserver 用户名&#xff1a;yourname 点击“编辑”-“设置”菜单打开设置对话框&#xff0c;找到“连接”-“SFTP”设置项 添加密钥文件(A)”按钮,添加私钥文件&#xff0c;弹出对话框&a…

yo angualr-fullstatck 项目打包部署

yoeman使用grunt进行打包部署&#xff0c;直接运行grunt命令即可&#xff0c;期间会对代码进行检查&#xff0c;如果存在不规范的地方jshint会指定出来&#xff0e; grunt会对静态资源进行打包而且对资源文件名进行了MD5作为版本戳&#xff0e; &#xff11;&#xff1a;修改se…

学习笔记(43):Python实战编程-事件处理简介

立即学习:https://edu.csdn.net/course/play/19711/343105?utm_sourceblogtoedu 事件&#xff1a; 1.概念&#xff1a;就是给组件添加一定的功能&#xff0c;使得单击或者是聚焦时产生一定的反应 2.知识点&#xff1a; 1&#xff09;给组件绑定事件&#xff1a; 组件名.bind…

samba

安装配置samba&#xff1a; 准备工作&#xff1a; 173/udp(NetBIOS) 138/udp 139/tcp 445/tcp 这些端口已经启动。 然后确定selinux已经关闭&#xff08;#getenforce&#xff09;。 一般我们装好系统之后samba都会安装的&#xff1a;yum list all samba* 这里我选用的是samba3x…

1 week110的zookeeper的安装 + zookeeper提供少量数据的存储

下面是在weekend110上的zookeeper的安装 在此之前&#xff0c;先进行快照备份。 在这里&#xff0c;为了后续的zookeeper配置需要&#xff0c;在/home/hadoop/下&#xff0c;新建data目录&#xff0c;再新建zookeeper-3.4.6目录&#xff0c;再新建zkdata目录。 默认情况下&…

学习笔记(47):Python实战编程-pack布局

立即学习:https://edu.csdn.net/course/play/19711/343109?utm_sourceblogtoedu pack布局&#xff1a; 1&#xff09;最常用的布局&#xff0c;顺序排列布局方法 2&#xff09;完成了简单的组件位置码放&#xff0c;但如果内部布局处理机制跟不上的话&#xff0c;也可能会达…

ASP.NET Web API 应用教程(一) ——数据流使用

相信已经有很多文章来介绍ASP.Net Web API 技术&#xff0c;本系列文章主要介绍如何使用数据流&#xff0c;HTTPS&#xff0c;以及可扩展的Web API 方面的技术&#xff0c;系列文章主要有三篇内容。 主要内容如下&#xff1a; I 数据流 II 使用HTTPS III 可扩展的Web API 文档…

windows安装64位Pygame方法

因为官方网站http://www.pygame.org/download.shtml并没有提供64位的pygame&#xff0c;所以要找其他网站制作的64位安装文件。 如果你已经在你的64位开发环境中安装了32位的pygame&#xff0c; 那么在导入pygame包的时候&#xff0c; 会有提示&#xff1a; ImportError: DLL l…

学习笔记(48):Python实战编程-grid布局

立即学习:https://edu.csdn.net/course/play/19711/343110?utm_sourceblogtoedu grid布局&#xff1a;根据表结构进行的布局&#xff0c;索引为0行0列开始&#xff0c;最具代表性的即使电脑计算器的数字和符号按键布局 组件.grid(row 行索引号 &#xff0c; column 列索引号…

为什么“三次握手,四次挥手”?

前言&#xff1a; 如果你说你懂IT,你懂计算机网络&#xff0c;那么你会怎么解释“三次握手&#xff0c;四次挥手”&#xff1f; ---------------- 1.TCP报文段首部格式&#xff1a; 2.TCP建立连接图 -------------------------------------------- 符号说明 seq:"sequance…