bzoj:1661 [Usaco2006 Nov]Big Square 巨大正方形
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
J*J***
******
J***J*
******
**B***
******
Sample Output
输出解释:
如果 Bessie 可以占据 农民 Bob 的牛所占的点,那么可以生成一个面积为8
的正方形,但是她只能放到第3行第3列,形成一个最大的、面积为 4个正方形。


#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,ans=,an;
char map[][];
int main(){
scanf("%d",&n);
for (int i=;i<n;i++)
for (int j=;j<n;j++) while(map[i][j]!='J'&&map[i][j]!='*'&&map[i][j]!='B') map[i][j]=getchar();
for (int x1=;x1<n;x1++)
for (int y1=;y1<n;y1++){
if ((n--x1)*(n--x1)+(n--y1)*(n--y1)<=ans) break;
for (int x2=x1;x2<n;x2++)
for (int y2=y1+int(sqrt((ans-(x2-x1)*(x2-x1))>?(ans-(x2-x1)*(x2-x1)):));y2<n;y2++)
if (x1!=x2||y1!=y2)
if (map[x1][y1]=='J'&&map[x2][y2]=='J'){
an=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
if (ans>=an) continue;
if(!((x1-(y2-y1)<)||(y1+(x2-x1)>=n)||(map[x1-(y2-y1)][y1+(x2-x1)]=='B')||(x2-(y2-y1)<)||(y2+(x2-x1)>=n)||(map[x2-(y2-y1)][y2+(x2-x1)]=='B')||(map[x1-(y2-y1)][y1+(x2-x1)]=='*'&&map[x2-(y2-y1)][y2+(x2-x1)]=='*')))ans=an;
if(!((x1+(y2-y1)>=n)||(y1-(x2-x1)<)||(map[x1+(y2-y1)][y1-(x2-x1)]=='B')||(x2+(y2-y1)>=n)||(y2-(x2-x1)<)||(map[x2+(y2-y1)][y2-(x2-x1)]=='B')||(map[x1+(y2-y1)][y1-(x2-x1)]=='*'&&map[x2+(y2-y1)][y2-(x2-x1)]=='*')))ans=an;
}
}
printf("%d\n",ans);
}
简洁明快的西瓜风格
bzoj:1661 [Usaco2006 Nov]Big Square 巨大正方形的更多相关文章
- bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形【枚举】
每句两个顶点确定正方形,取max即可 #include<iostream> #include<cstdio> using namespace std; int n,x,y,s, ...
- 【BZOJ】1661: [Usaco2006 Nov]Big Square 巨大正方形(暴力)
http://www.lydsy.com/JudgeOnline/problem.php?id=1661 暴力大法好... 枚举对角线(注意,一种对角线2种情况就行了,自己想...) 然后可以算出其它 ...
- bzoj1661[Usaco2006 Nov]Big Square 巨大正方形*
bzoj1661[Usaco2006 Nov]Big Square 巨大正方形 题意: n*n的图中有一些J点,一些B点和一些空白点,问在空白点添加一个J点所能得到的有4个J点组成最大正方形面积.n≤ ...
- Bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路 dijkstra,堆,A*,次短路
1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 969 Solved: 468[S ...
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板
题目 1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec Memory Limit: 64 MB Description Farmer ...
- BZOJ 1660: [Usaco2006 Nov]Bad Hair Day 乱发节( 单调栈 )
维护一个h严格递减的栈 , 出栈时计算一下就好了.. ------------------------------------------------------------------------- ...
- BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路( 最短路 )
从起点和终点各跑一次最短路 , 然后枚举每一条边 , 更新answer ---------------------------------------------------------------- ...
- BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路
1726: [Usaco2006 Nov]Roadblocks第二短路 Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她 ...
- BZOJ 1660: [Usaco2006 Nov]Bad Hair Day 乱发节
Description Input * Line 1: 牛的数量 N. * Lines 2..N+1: 第 i+1 是一个整数,表示第i头牛的高度. Output * Line 1: 一个整数表示c[ ...
随机推荐
- Linux 学习记录 一(安装、基本文件操作).
Linux distributions主要分为两大系统,一种是RPM方式安装软件的系统,包括Red Hat,Fedora,SuSE等都是这类:一种则是使用Debian的dpkg方式安装软件的 ...
- 637. Average of Levels in Binary Tree
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an ...
- xamarin Android activity生命周期详解
学Xamarin我为什么要写这样一篇关于Android 的activity生命周期的文章 已经学Xamarin android有一段时间了,现在想起当初Xamarin也走了不少的弯路.当然Xamari ...
- BZOJ2001 HNOI2010 城市建设
题目大意:动态最小生成树,可以离线,每次修改后回答,点数20000,边和修改都是50000. 顾昱洲是真的神:顾昱洲_浅谈一类分治算法 链接: https://pan.baidu.com/s/1c2l ...
- bzoj 3139: [Hnoi2013]比赛
Description 沫沫非常喜欢看足球赛,但因为沉迷于射箭游戏,错过了最近的一次足球联赛.此次联 赛共N支球队参加,比赛规则如下: (1) 每两支球队之间踢一场比赛. (2) 若平局,两支球队各得 ...
- 如何写一个SSH项目(三)如何进行交互的
下面以登录为例子,展示从前台到后端的一整套流程并进行分析. 首先介绍一下我的SSH的分层结构 action和service一起是业务逻辑层 action层调用service层 dao ...
- 20行JS代码实现贪吃蛇
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 自动删除文件脚本(Linux shell脚本)
每天在/home/face/capturepic/2017/目录下都会产生很多文件 /home/face/capturepic/2017/4/21 /home/face/capturepic/2017 ...
- idea创建Maven多模块项目
最近几天学习到了创建多模块项目,应为自己使用的是Idea,所以想用idea创建多模块,查阅了相关资料后,自己做一个记录. 一.首先创建一个maven项目 Parent Project,创建xxx-ro ...
- Ubuntu16.04安装配置sublime text3
1.安装Sublime Text 3 首先添加sublime text 3的仓库: sudo add-apt-repository ppa:webupd8team/sublime-text-3 根据提 ...