我是靠谱客的博主 苗条手套,这篇文章主要介绍A - City Game,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<cstdio> #include<cstdlib> #include<iostream> using namespace std; #define N 1002 int map[N][N]; int main() { int i,j,m,n,Min,area,high,t,k; char c[100]; scanf("%d",&t); while(t--) { for(i=0; i<N; i++) for(j=0; j<N; j++) map[i][j]=0; //初始化全为0 scanf("%d%d",&n,&m); area=0; for(i=1; i<=n; i++) { for(j=1; j<=m; j++) { scanf("%s",&c); //可能有多个空格,%c的话就WA了 if(c[0]=='F') map[i][j]=map[i][j-1]+1; else map[i][j]=0; } //输入一行,求一次最大面积 for(j=1; j<=m; j++) { if(map[i][j]!=0) { Min=map[i][j]; //记录这一列[i][j]的最小值 if(area<map[i][j]) area=map[i][j]; //此时这一行的面积即是[i][j]的值,应为[i][j]记录的就是F high=1; //高的初值应该为1(只有自身一行) for(k=i-1; k>=1; k--) //向上查找 { if(map[k][j]==0) //遇到R就可以退出了 break; else if(map[k][j]!=0) { high++; //找到一个F,高度加1 if(map[k][j]<Min) //更新这一列[i][j]的最小值 Min=map[k][j]; if(area<high*Min) //计算面积并更新 area=high*Min; } } } } } printf("%dn",area*3); } return 0; }

http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=228#problem/A

转载于:https://www.cnblogs.com/yangyongqian/p/3903977.html

最后

以上就是苗条手套最近收集整理的关于A - City Game的全部内容,更多相关A内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(96)

评论列表共有 0 条评论

立即
投稿
返回
顶部