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;不再与…

ie6、7 下input的边框问题 ?

input的border设置为none,ie8及以上border都兼容&#xff0c;ie6和7的border还继续存在&#xff0c;将border设为0时所有浏览器上都不存在了&#xff0c;但是border为0时还是会继续的渲染。 将input的border设为"0 none",ie7及以上都正常了&#xff0c;但是ie6上inpu…

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

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

轻量级文本编辑器,Notepad最佳替代品:Notepad++

目录 正文之前1. 目的2. 原帖3. 为何推荐Notepad3.1. Notepad的一些基本特点3.2. notepad&#xff0c;notepad2&#xff0c;notepad&#xff0c;ultraEdit比较4. 使用Notepad前要了解的知识4.1. Notepad的名称和缩写4.2. Notepad修改设置后&#xff0c;立即生效4.3. Notepad的版…

学习笔记(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…

SDL 库 无法解析的外部符号 __imp__fprintf

VS2015 在链接器-》命令行 里加入legacy_stdio_definitions.lib 另外一个常见错误关于stderr的用 extern "C" { FILE __iob_func[3] { *stdin,*stdout,*stderr }; }转载于:https://www.cnblogs.com/zhaogaojian/p/5646885.html

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

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

学习笔记(39):Python实战编程-标签

立即学习:https://edu.csdn.net/course/play/19711/343101?utm_sourceblogtoedu 标签——文字标签和图片标签 1.文字标签 关键代码&#xff1a; label_text tkinter.Label(root,text linlianqin.com, width "20",height "10",font (楷体,20),bg #1…

散列冲突与作为特征值的散列

缘起 写这篇文章&#xff0c;源于这么一个问题&#xff1a;假设目前有一千万个URL访问记录&#xff0c;请统计最热门的10个查询串。(见此文)。见到这个问题的第一想法使用hash解决&#xff0c;没考虑hash冲突解决的问题(其实就没想比较URL&#xff0c;不比较URL无法判断冲突与否…

C++:getenv setenv -- 获取设置系统环境变量

C&#xff1a;getenv & setenv -- 获取&设置系统环境变量 1. getenv&#xff1a;取得环境变量内容 头文件- #include<stdlib.h> 格式&#xff1a; char * getenv(const char *name); 意义&#xff1a; getenv()用来取得参数name环境变量的内容。 param name为环…

CSS单位和值

颜色值 在网页中的颜色设置是非常重要&#xff0c;有字体颜色&#xff08;color&#xff09;、背景颜色&#xff08;background-color&#xff09;、边框颜色&#xff08;border&#xff09;等&#xff0c;设置颜色的方法也有很多种&#xff1a; 1、英文命令颜色 前面几个小节中…

学习笔记(40):Python实战编程-文本

立即学习:https://edu.csdn.net/course/play/19711/343102?utm_sourceblogtoedu 文本——人机交互&#xff0c;文本输入的地方&#xff08;tkinter.Text&#xff08;“需要显示的文本”&#xff0c;属性的设置&#xff09;组件类&#xff09; 知识点&#xff1a; 文本输入 文…

嵌入式linux的调试技术

本章介绍了嵌入式linux的调试技术&#xff0c;例如&#xff0c;设置断点、逐步跟踪代码、输出调试信息等。 Printk函数用于打印内核调试信息&#xff0c;运行在内核空间&#xff0c;printf函数运行在用户空间。Printk文件是一个简单的有4个数字组成的文本文件。 虽然使用Printk…

constexpr的好处

constexpr的好处&#xff1a; 是一种很强的约束&#xff0c;更好地保证程序的正确语义不被破坏。编译器可以在编译期对constexpr的代码进行非常大的优化&#xff0c;比如将用到的constexpr表达式都直接替换成最终结果等。相比宏来说&#xff0c;没有额外的开销&#xff0c;但更…

PHP中include()与require()的区别说明

123456789101112131415161718192021222324252627require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面&#xff0c;PHP 程序在执行前&#xff0c;就会先读入 require 所指定引入的文件&#xff0c;使它变成 PHP 程序网页的一部份…

电脑重装系统重装不了,老是蓝屏,是不是硬盘烧坏了!

蓝屏代码是什么啊装不了有时候是内存的问题以下内容为百度知道Ctangel个人总结&#xff0c;并非网络复制&#xff0c;全是个人日常工作中遇到并且明确确定原因的。如需复制请注明出处。这里列举几个典型的蓝屏故障的原因和解决办法。一、0X0000000A 这个蓝屏代码和硬件无关&…

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

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

第八章读后感

一&#xff0e;Linux驱动的代码重用有很多的方法&#xff0c;可以采用标准的C程序的方法将要重用的代码放在其他的文件&#xff08;在头文件中声明&#xff09;中。如果要使用某些功能&#xff0c;include相应的头文件即可&#xff0c;也可以是另外一种动态重用的方式&#xff…

linux系统基础优化小结

不用root&#xff0c; 添加普通用户&#xff0c;通过sudo授权管理 更改默认的远程ssh服务端口及禁止root用户远程登陆 定时自动更新服务器时间 ntpdate 配置yum更新源&#xff0c;从国内更新源下载安装软件&#xff0c;如啊里云&#xff0c;163等.http://mirrors.aliyun.com…