【t080】遗址
来源:互联网 发布:旧版本ios软件 编辑:程序博客网 时间:2024/04/28 05:00
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
很久很久以前有一座寺庙,从上往下看寺庙的形状正好是一个正方形,在4个角上竖立着圆柱搭建而成。现在圆柱都倒塌了,只在地
上留下圆形的痕迹,可是现在地上有很多这样的痕迹,专家说一定是最大的那个。
写一个程序,给出圆柱的坐标,找出由4个圆柱构成的最大的正方形,因为这就是寺庙的位置,要求计算出最大的面积。注意正方形
的边不一定平行于坐标轴。
例如下图有10根柱子,其中(4,2),(5,2),(5,3),(4,3)可以形成一个正方形,(1,1),(4,0),(5,3),(2,4)也可以,后者是其中最大的
,面积为10。
【数据范围】
30% 1<=N<=100
60% 1<=N<=500。
【输入格式】
第一行包含一个N(1<=N<=3000),表示柱子的数量。
接下来N行,每行有两个空格隔开的整数表示柱子的坐标(坐标值在0.到5000之间),柱子的位置互不相同。
【输出格式】
如果存在正方形,输出最大的面积,否则输出0。
Sample Input
10
9 4
4 3
1 1
4 2
2 4
5 8
4 0
5 3
0 5
5 2
Sample Output
10
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t080
【题解】
可以把正方形在图中分割成4个直角三角形(全等)和一个小的正方形.
则可以枚举正方形的底边的两个点(x1,y1),(x2,y2)
(一开始排个序,x坐标升序排一下,则x1< x2);
第三个点的坐标(x3,y3)
则
x2-x1=y3-y1
-(y2-y1)=x3-x1
同样的
x2-x1=y4-y2
-(y2-y1)=x4-x2
求出(x3,y3),(x4,y4)之后,看看这样的两个点是否存在,存在就尝试更新面积最大值;
面积就是边长的平方;sqr(x2-x1)+sqr(y2-y1);
【完整代码】
#include <cstdio>#include <algorithm>#define pii pair<int,int>#define fi first#define se secondusing namespace std;const int MAXN = 5000+100;bool bo[MAXN][MAXN];int n,ans = 0;pii a[MAXN];int sqr(int x) { return x*x;}bool in(int x,int y){ if (x>5000) return false; if (x<1) return false; if (y>5000) return false; if (y<1) return false; return true;}int main(){ //freopen("F:\\rush.txt","r",stdin); scanf("%d",&n); for (int i = 1;i <= n;i++) { scanf("%d%d",&a[i].fi,&a[i].se); bo[a[i].fi][a[i].se] = true; } sort(a+1,a+1+n); for (int i = 1;i <= n-1;i++) for (int j = i+1;j <= n;j++) { int dx = a[j].fi-a[i].fi; int dy = a[j].se-a[i].se; int y3 = a[i].se+dx,x3 = a[i].fi-dy; int y4 = a[j].se+dx,x4 = a[j].fi-dy; if (in(x3,y3)&&in(x4,y4) && bo[x3][y3]&&bo[x4][y4]) ans = max(ans,sqr(a[j].fi-a[i].fi)+sqr(a[j].se-a[i].se)); } printf("%d\n",ans); return 0;}
- 【t080】遗址
- 薛家岗古文化遗址
- 遗址 (Standard IO)
- 亚特兰提斯之帝国的遗址
- 曹操陵墓遗址确认
- ZT 唐天坛遗址游记
- 南昌汉代海昏侯国遗址管理局正式挂牌
- 太平山日军要塞遗址揭秘 价值堪比731
- 太平山日军要塞遗址揭秘 价值堪比731
- 9•11遗址纪念馆将于2011年完工
- 你走后 爱情的遗址像是空城
- 1400亿改造大明宫遗址区 西安将建城市中央公园
- 大明宫仿古丹凤门现雏形 内部将建遗址博物馆
- 去西安大明宫国家遗址公园真不易 得倒三趟车
- 急!mono的版本,以及如何将window上的net程序遗址到linux上,还有
- 北京一日行之七——北京工艺美术馆、老舍纪念馆、北大红楼、皇城根遗址、皇城艺术馆、警察馆、钱币馆
- 真实世界的Windows Azure: 为了加强和振兴Luxor旅游业,埃及世界文化遗址在Windows Azure上建立移动门户
- 1025. PAT Ranking (25)
- C语言上课笔记:第一个C程序Hello World
- word cloud install
- Nodejs 学习笔记-概括(一)
- 对数的理解
- 【t080】遗址
- 模块
- Leetcode 28. Implement strStr()
- Leetcode 53. Maximum Subarray
- [OpenGL]从零开始写一个Android平台下的全景视频播放器——5.3 如何实现分屏效果
- CGI-Web服务器接收并显示数据 《Head First Python》第九章
- Openstack基础之oslo(一)
- spark catalyst中的DSL 解析
- android_102_自定义Style