bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形(枚举)
来源:互联网 发布:云建站淘宝客 编辑:程序博客网 时间:2024/06/07 11:56
1661: [Usaco2006 Nov]Big Square 巨大正方形
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 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;}/*6J***********J******************************/
阅读全文
1 0
- bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形 (枚举)
- bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形(枚举)
- bzoj 1661 [Usaco2006 Nov]Big Square 巨大正方形
- |BZOJ 1661|暴力|[Usaco2006 Nov]Big Square 巨大正方形
- bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形 解题报告
- 1661: [Usaco2006 Nov]Big Square 巨大正方形
- bzoj 1662: [Usaco2006 Nov]Round Numbers 圆环数(枚举)
- 【枚举】Big Square
- BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路
- bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路
- BZOJ 1726 [Usaco2006 Nov]Roadblocks第二短路
- [USACO5.3]巨大的牛棚Big Barn && 洛谷【p1387】最大正方形(动态规划)
- bzoj 1725: [Usaco2006 Nov]Corn Fields牧场的安排(状压DP)
- bzoj 1660: [Usaco2006 Nov]Bad Hair Day 乱发节(单调栈)
- bzoj 1660: [Usaco2006 Nov]Bad Hair Day 乱发节(单调栈)
- bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路(A*第k短路)
- BZOJ 1660: [Usaco2006 Nov]Bad Hair Day 乱发节
- bzoj 1725: [Usaco2006 Nov]Corn Fields牧场的安排
- Python基础教程第六章学习笔记——抽象
- Jquery ajax只执行error回调的原因
- 一个租房案列透彻理解--静态代理模式
- STM32半主机模式
- 加密算法介绍
- bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形(枚举)
- c++中的accumulate()
- 本地费控与远程费控
- MyBatis Generator(MBG)日志信息
- Modbus测试工具ModbusPoll与Modbus Slave使用方法
- 兼容浏览器的最小高度(min-height)
- VS明明定义了函数却编译出错:error LNK2019: 无法解析的外部符号
- php 编码问题
- jquery选择 option li checkbox