1661: [Usaco2006 Nov]Big Square 巨大正方形

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 467  Solved: 230
[Submit][Status][Discuss]

Description

农民 John 的牛参加了一次和农民 Bob 的牛的竞赛。他们在区域中画了一个N*N 的正方形点阵,两个农场的牛各自占据了一些点。当然不能有两头牛处于同一个点。农场的目标是用自己的牛作为4个顶点,形成一个面积最大的正方形(不必须和边界平行) 。 除了 Bessie 以外,FJ其他的牛都已经放到点阵中去了,要确定bessie放在哪个位置,能使得农民约翰的农场得到一个最大的正方形(Bessie不是必须参与作为正方形的四个顶点之一)。

Input

* Line 1: 一个整数 N,2<=N<=100

* Lines 2..N+1: 第 i+1 行描述点阵的第i行,有 N 个字符。字符集是: 'J' 表示这个点是农民 John 的牛, 'B'表示这个点是农民 Bob 的牛, '*' 表示这个点没有被占据。保证至少有一个点没有被占据。

Output

* Line 1: 最大正方形的面积,或者无解的话输出0。

Sample Input

6
J*J***
******
J***J*
******
**B***
******

Sample Output

4

一个正方形只要满足三个顶点是J,第四个顶点不是B就符合要求

所以可以暴力枚举相邻的两个J,然后判断另外两个点是否满足条件就好了

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
typedef struct
{int x;int y;
}Point;
Point s[10005], a, b;
char str[105][105];
int main(void)
{int n, i, j, ans, cnt = 0;scanf("%d", &n);for(i=1;i<=n;i++){scanf("%s", str[i]+1);for(j=1;j<=n;j++){if(str[i][j]=='J')s[++cnt].x = i, s[cnt].y = j;}}ans = 0;for(i=1;i<=cnt;i++){for(j=i+1;j<=cnt;j++){a.y = s[i].y+(s[j].x-s[i].x);a.x = s[i].x+(s[i].y-s[j].y);b.y = s[j].y+(s[j].x-s[i].x);b.x = s[j].x+(s[i].y-s[j].y);if(a.x<1 || a.x>n || a.y<1 || a.y>n || b.x<1 || b.x>n || b.y<1 || b.y>n)continue;if(str[a.x][a.y]=='J' && str[b.x][b.y]!='B' || str[a.x][a.y]!='B' && str[b.x][b.y]=='J')ans = max(ans, (s[i].x-s[j].x)*(s[i].x-s[j].x)+(s[i].y-s[j].y)*(s[i].y-s[j].y));}}for(i=1;i<=cnt;i++){for(j=i+1;j<=cnt;j++){a.y = s[i].y-(s[j].x-s[i].x);a.x = s[i].x-(s[i].y-s[j].y);b.y = s[j].y-(s[j].x-s[i].x);b.x = s[j].x-(s[i].y-s[j].y);if(a.x<1 || a.x>n || a.y<1 || a.y>n || b.x<1 || b.x>n || b.y<1 || b.y>n)continue;if(str[a.x][a.y]=='J' && str[b.x][b.y]!='B' || str[a.x][a.y]!='B' && str[b.x][b.y]=='J')ans = max(ans, (s[i].x-s[j].x)*(s[i].x-s[j].x)+(s[i].y-s[j].y)*(s[i].y-s[j].y));}}printf("%d\n", ans);return 0;
}
/*
6
J*****
******
J*****
******
******
******
******
*/

bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形(枚举)相关推荐

  1. BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)

    BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec  Memory Limit: 64 MB Description 正如你所知 ...

  2. BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板

    题目 1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec  Memory Limit: 64 MB Description Farmer ...

  3. bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路(A*第k短路)

    1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1324  Solved: 627 ...

  4. bzoj 1662: [Usaco2006 Nov]Round Numbers 圆环数(枚举)

    1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 413  Solved: 2 ...

  5. bzoj 1660: [Usaco2006 Nov]Bad Hair Day 乱发节(单调栈)

    1660: [Usaco2006 Nov]Bad Hair Day 乱发节 Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 1180  Solved: 5 ...

  6. bzoj:1725: [Usaco2006 Nov]Corn Fields牧场的安排

    Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧 ...

  7. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)...

    链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  8. BZOJ 1725: [Usaco2006 Nov]Corn Fields牧场的安排

    状压DP #include<cstdio> using namespace std; const int mod=1e8; int n,m,a[15][15],F[15][10005]; ...

  9. [BZOJ1724][Usaco2006 Nov]Fence Repair 切割木板

    1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1272  Solved: ...

最新文章

  1. php true true true,php-为什么此评估为true
  2. 世界人工智能创新大赛来了!
  3. 一起谈.NET技术,40条ASP.NET开发Tip
  4. php中sisson用法,详细介绍php中session的用法
  5. (1)非对称加密——RSA——史上最通俗的小白可看懂!
  6. python查找一段字符串中是否包含指定字符串
  7. php构造函数连数据库,php 连接数据库的类
  8. 使用jave进行视频转码
  9. linux 删除开机密码,6种清除开机密码方法,总有一个适合你
  10. 【技术】客服服务开发
  11. vscode快捷键实现快速换行
  12. Joda-Time 操作常用时间函数
  13. 怎么在cmd中运行python脚本_cmd中运行python脚本智能使用流程
  14. 腾讯云服务器php设置,Windows 腾讯云服务器的 PHP 配置
  15. mkdir: Permission denied: user=root, access=WRITE, inode=/lcy/test5.txt:hdfs:hdfs:drwxr-xr-x
  16. matplotlib.pyplot.pie()绘制饼图
  17. 纯色图片颜色渐变动画
  18. Ubuntu 15.10 搜狗搜狗输入法崩溃解决方法
  19. 电子电路测试软件,清华大学出版社-图书详情-《电子电路软件仿真实验教程》...
  20. 删除鼠标右键Office 的共享文件夹同步 已成功

热门文章

  1. python程序-Python程序执行原理,python程序怎么运行的?
  2. python程序员工资-Python工资高还是Java?
  3. python适合自学编程吗-Python为什么这么火?小孩子适合学习python编程吗?
  4. python安装-Python uWSGI 安装配置
  5. 研究发现,商业语音识别系统存在高错误率
  6. play ---------idea
  7. vscode npm install下载权限问题解决
  8. JavaScript-包装类型
  9. 【王道计组笔记】总线(1):总线的概念和分类
  10. python非法变量名_python – DatabaseError:ORA-01036:非法变量名称/编号