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 second using 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;
}

最新文章

  1. 使用VIM插件ctags来阅读C代码
  2. iOS 推送所调用的函数详解
  3. (转载)java多态(2)-------Java转型(向上或向下转型)
  4. Java 数组 可变长参数 实例
  5. IIS7.5 自定义Html/shtml/htm...后缀映射
  6. 分布式基础学习(2)分布式计算系统(Map/Reduce)
  7. Python Tutorial - Parse JSON Objects with Python
  8. 第一百三十四节,JavaScript,封装库--遮罩锁屏
  9. C++STL中set的使用策略(详解)
  10. mybatis的动态增删改查
  11. webview 更新方法细节
  12. 16进制转化8进制---map
  13. pvr.ccz 与 png 格式 互转的解决方案
  14. C/C++如何整行读入字符串?
  15. Jar包的格式
  16. linux之redis
  17. 百度NLP二面
  18. HTTPS科普(转)
  19. 自底向上归并排序(Merge Sort)
  20. jQuery学习笔记(三)

热门文章

  1. R语言-有负下标里才干有零
  2. 学习笔记:Vue——动态组件&amp;异步组件
  3. amazeui学习笔记--css(常用组件14)--缩略图Thumbnail
  4. stm32单片机的封装
  5. JS实现穿墙效果(判断鼠标划入划出的方向)
  6. 关于JS面向对象继承问题
  7. HibernateCRUD基础框架(2)-HQL语句构造器(HqlQueryBuilder,HqlUpdateBuilder)
  8. IIS服务器设置http自动跳转https方法
  9. 【z07】机器翻译
  10. 【JS学习】-利用谷歌浏览器调试JS代码(转)