博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj4506: [Usaco2016 Jan]Fort Moo(暴力)
阅读量:5367 次
发布时间:2019-06-15

本文共 1993 字,大约阅读时间需要 6 分钟。

4506: [Usaco2016 Jan]Fort Moo

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 145  Solved: 104
[][][]

Description

Bessie正在和她的朋友Elsie建一座堡垒。像任何好的堡垒一样,这需要从一个坚固的框架开始。Bessie想要在一
个矩形上建造堡垒,并在矩形周围围上1x1的框架。Bessie已经选择了一个建造堡垒的地方 —— 一块长宽分别为
为NM的土地(1<= N,M<= 200)。不幸的是,该地区有一些沼泽,不能用于支持框架。 请帮助贝西确定她可以用于
建造堡垒的最大矩形区域,避免框架搭建在任何一块沼泽上。题目大意:有一个NM的矩形包含字符‘.’和‘X’,
找出最大的边缘不包含‘X’的子矩形并输出它的面积。
 
 

 

Input

第一行包含整数N和M。接下来的N行每行包含M个字符,形成网格描述区域,‘.’表示正常的草地,‘X’表示沼泽
 
 

 

Output

一个整数,表示Bessie可以用她的堡垒覆盖的最大面积。

Sample Input

5 6
......
..X..X
X..X..
......
..X...

Sample Output

16
In the example, the placement of the optimal frame is indicated by 'f's below:
.ffff.
.fX.fX
Xf.Xf.
.ffff.
..X...
 
/*预处理每个点能往上下左右扩展的距离n^2枚举每个点n^2暴力扩展复杂度n^4 emmm 加点优化就过了 */#include
#define N 201using namespace std;int n,m,ans,cnt;int a[N][N];int ex_up[N][N],ex_down[N][N],ex_L[N][N],ex_R[N][N];char ch;int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cin>>ch; a[i][j]=(ch=='.'?0:1); } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cnt=0; while(j+cnt<=m && !a[i][j+cnt]) cnt++; if(cnt) ex_R[i][j]=cnt-1; cnt=0; while(j-cnt>=1 && !a[i][j-cnt]) cnt++; if(cnt) ex_L[i][j]=cnt-1; cnt=0; while(i-cnt>=1 && !a[i-cnt][j]) cnt++; if(cnt) ex_up[i][j]=cnt-1; cnt=0; while(i+cnt<=n && !a[i+cnt][j]) cnt++; if(cnt) ex_down[i][j]=cnt-1; } ans=1; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(!ex_R[i][j]) continue; if((ex_R[i][j]+1)*(ex_down[i][j]+1)<=ans) continue; for(int x=j;x<=j+ex_R[i][j];x++) { if(!ex_down[i][x]) continue; for(int y=i;y<=i+ex_down[i][j];y++) { if(i+ex_down[i][x]>n || j+ex_R[y][j]>m) continue; if(i+ex_down[i][x]>=y && j+ex_R[y][j]>=x) ans=max(ans,(x-j+1)*(y-i+1)); } } } printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/L-Memory/p/9885599.html

你可能感兴趣的文章
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
将Centos的yum源更换为国内的阿里云源
查看>>
git diff 的用法
查看>>
一段sql的优化
查看>>
十进制与十六进制的相互转换
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>
POJ1062 昂贵的聘礼
查看>>