题目描述

  有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。

  这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。
  现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着'F'并且面积最大。
  但是rainbow和freda的OI水平都弱爆了,找不出这块土地,而蓝兔也想看freda卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面积为S,它们每人给你S两银子。

输入描述

  第一行两个整数N,M,表示矩形土地有N行M列。
  接下来N行,每行M个用空格隔开的字符'F'或'R',描述了矩形土地。

输出描述 

  输出一个整数,表示你能得到多少银子,即(3*最大'F'矩形土地面积)的值。

样例输入

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

样例输出 

45

数据范围及提示 

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

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

题解:这道题目要求的是最大的子矩阵,用普通的做法O(n^4)是绝对不行的,我们这时就要用到悬线法来用O(n^2)的空间复杂度来完成此题。悬线法是由国家队队员王知昆提出,详见下面的链接。

请参考:http://wenku.baidu.com/view/6b348c0203d8ce2f006623bb.html

#include <cstdio>
#include <iostream>
#include <algorithm>
int n,m,a[1005][1005],leftt[1005],rightt[1005],h[1005],ans;
char ch;
using namespace std;
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){cin>>ch;if (ch=='R') a[i][j]=1;}for (int i=1;i<=n;i++) leftt[i]=1,rightt[i]=m;for (int i=1;i<=n;i++){int l=0,r=m+1;for (int j=1;j<=m;j++)if (a[i][j]){l=j;h[j]=0;leftt[j]=1;} else{h[j]++;leftt[j]=max(leftt[j],l+1);}for (int j=m;j>=1;j--){if (a[i][j]){r=j;rightt[j]=m;} elserightt[j]=min(rightt[j],r-1);ans=max(ans,(rightt[j]-leftt[j]+1)*h[j]);}}printf("%d\n",ans*3);return 0;
}

CODEVS 2491 玉蟾宫相关推荐

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

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

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

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

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

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

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

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

  5. BZOJ[3039]玉蟾宫 悬线法

    题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3039 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山 ...

  6. BZOJ 3039 玉蟾宫

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

  7. 【洛谷】P4147 玉蟾宫 解题报告

    [洛谷]P4147 玉蟾宫 解题报告 题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N* ...

  8. 玉蟾宫【洛谷P4147】

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

  9. bzoj3039 玉蟾宫

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

最新文章

  1. 动手学深度学习笔记一线性回归
  2. RHEL7恢复root密码
  3. About Instruments
  4. vsftpd.conf详解
  5. php时间区间,优化显示
  6. python-用Map, Filter, Reduce代替For循环
  7. c#读取xml中特定节点的值(实例)
  8. 导出mysql sql语句吗_mysql sql语句导入与导出
  9. Dataset:数据生成之利用pandas自定义生成随机各自类型(离散型和连续型)的dataframe数据
  10. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
  11. 修改用户和用户组权限
  12. 全球排名前50网站使用的开发语言及系统平台
  13. ZZULIOJ 1047: 对数表,Java
  14. MAX6299MTT在CPLD上的应用
  15. 鱼之死,越狱章鱼和雾霾黑客
  16. 前端开发和后端开发究竟有什么区别?详细介绍
  17. 特斯拉硬核皮卡发布,现场却「碎了一地玻璃」
  18. EfficientNET_V1
  19. 消防工程师 1.1 消防给水及设施(2)
  20. 激活windows10系统提示错误代码0x800705b4怎么解决

热门文章

  1. 263企业邮箱imap服务器,263企业邮箱实现IMAP邮箱搬家功能
  2. android sdk目录缺少uiautomatorviewer,解决Android8.0以上运行不了uiautomatorviewer的办法...
  3. 有内鬼,终止换脸!用Landmarks Debug找出不老实的脸。
  4. java随机生成数字和字母_使用java如何生成随机的字母数字字符串?
  5. hosts : IP - 主机名/域名映射
  6. PMP之项目采购管理
  7. java开发-微信支付
  8. 机器学习之Python Sklearn——线性回归
  9. matlab绘制空间摆线轨迹
  10. 你和你的女神之间,差了一个OpenCV口红色号识别器