玉蟾宫
来源:互联网 发布:帝国cms手机端 tags 编辑:程序博客网 时间:2024/04/27 16:51
题目描述 Description
有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。
这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。
现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着'F'并且面积最大。
但是rainbow和freda的OI水平都弱爆了,找不出这块土地,而蓝兔也想看freda卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面积为S,它们每人给你S两银子。
输入描述 Input Description
第一行两个整数N,M,表示矩形土地有N行M列。
接下来N行,每行M个用空格隔开的字符'F'或'R',描述了矩形土地。
输出描述 Output Description
输出一个整数,表示你能得到多少银子,即(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 & Hint
对于50%的数据,1<=N,M<=200
对于100%的数据,1<=N,M<=1000
首先按行或列求出连续的F的个数有多少,
然后按列或行进行左右扩展,找左右两边
比当前连续F个数多的个数相乘就可以了。
有点像单调栈。
#include <stdio.h>#include <string.h>const int maxn = 1005;char str[maxn][maxn];int map[maxn][maxn];inline int Max ( int a, int b ){ return a > b ? a : b;}void print ( int n, int m ){ for ( int i = 1; i <= n; i ++ ) { for ( int j = 1; j <= m; j ++ ) printf ( "%d ", map[i][j] ); printf ( "\n" ); }}int main ( ){ int n, m, ans = 0; char ch[2]; scanf ( "%d%d", &n, &m ); for ( int i = 1; i <= n; i ++ ) for ( int j = 1; j <= m; j ++ ) { scanf ( "%s", ch ); str[i][j] = ch[0]; } for ( int j = 1; j <= m; j ++ ) //按列找F个数 { for ( int i = 1; i <= n; i ++ ) { if ( str[i][j] == 'R' ) continue ; map[i][j] = map[i-1][j]+1; } } for ( int i = 1; i <= n; i ++ ) { for ( int j = 1; j <= m; j ++ ) { if ( map[i][j] == 0 ) continue ; int cnt = 1, t = j+1; while ( map[i][t] >= map[i][j] ) //注意需要左右扩展个数比当前个数多的长度 t ++, cnt ++; t = j-1; while ( map[i][t] >= map[i][j] ) t --, cnt ++; ans = Max ( ans, cnt*map[i][j] ); //个数乘高度 } } printf ( "%d\n", ans*3 ); return 0;}/*5 6R F F R F FF F R F F FR R R F R FF F R F F FF F R F F F*/
0 0
- 玉蟾宫
- Poetize4 玉蟾宫
- 3039: 玉蟾宫
- BZOJ 3039: 玉蟾宫
- BZOJ3039 玉蟾宫
- [BZOJ3039] 玉蟾宫
- bzoj3039 玉蟾宫
- code vs玉蟾宫
- 【bzoj3039】玉蟾宫
- tyvj1939 玉蟾宫
- tyvj p1939玉蟾宫
- bzoj 3039 玉蟾宫
- CODEVS 2491 玉蟾宫
- 【codevs 2491】玉蟾宫
- bzoj3039玉蟾宫
- bzoj3039: 玉蟾宫
- Codevs 2491 玉蟾宫
- 【玉蟾宫】codevs 2491
- Ubuntu端口映射
- Ubuntu14.04安装搜狗输入法
- ioS C语言 循环结构
- Android之Handler用法总结
- Comparator<T> 接口
- 玉蟾宫
- Java面向对象知识点总结
- bs缩略图、警告框、进度条、媒体对象、列表组、面板
- Android手机传感器介绍
- linux-模块划分
- Java多态知识小结+简单代码实例
- 1076: [SCOI2008]奖励关
- java/TreeSet
- 搜索引擎综述