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

【t080】遗址的更多相关文章

  1. 几何+暴力【p1959】 遗址[NOI导刊2009普及(6)]

    题目描述--> P1959 遗址_NOI导刊2009普及(6) 普通方法分析: 因为题目要求是找最大正方形(如果是长方形更麻烦. 讲真,题目不难,耗时间! 根据题目要求,我们要找的是正方形. 我 ...

  2. P1959 遗址_NOI导刊2009普及(6)

    题意:平面上n个点(坐标$0\le x,y\le 5000,n \le 3000$) 求以其中四个点为顶点的正方形的最大面积 $O(n^2)$枚举两个点作为当前正方形的对角线 那么如何求出另外两个点呢 ...

  3. python基础 Day01 练习题

    1 字符串格式化 #!/urs/bin/env python name = input("Name: ") age = int(input("Age: ")) ...

  4. PS教程1000例

    http://www.missyuan.com/thread-446934-1-1.html Photoshop绘制逼真头发发丝效果http://www.missyuan.com/thread-446 ...

  5. UNIX高级环境编程1

    UNIX高级环境编程1 故宫角楼是很多摄影爱好者常去的地方,夕阳余辉下的故宫角楼平静而安详. 首先,了解一下进程的基本概念,进程在内存中布局和内容. 此外,还需要知道运行时是如何为动态数据结构(如链表 ...

  6. 散文说python半篇——景观三元论与盖茨比的对话

    今天, 天气晴朗,风和日丽: 我事实上在说谎-- 爱说谎事实上是我的天性 上个礼拜四我就用景观三元论说了非常多谎话.然后一头大象自己上吊了. 了不起的大象啊,盖茨比也要从坟墓里爬出来了吧, 陈年旧事, ...

  7. _2Python_注释命名等基本操作

    注释:注解,解释 主要用于在代码中给代码标识出相关的文字提示(提高代码的可读性)或调试程序,方便别人阅读和自己日后修改. Python中注释分为两类.单行注释:单行注释以#号开头,在一行内,#号后面的 ...

  8. Car HDU - 5935

    Problem Description Ruins is driving a car to participating in a programming contest. As on a very t ...

  9. 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

    前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...

随机推荐

  1. Android学习笔记之ViewFlipper

    <1>被添加到ViewFlipper中的两个或两个以上的视图之间将执行一个简单的ViewAnimator动画.一次仅能显示一个子视图.如果需要,可以设置间隔时间使子视图像幻灯片一样自动显示 ...

  2. 指示函数(indicator function) 的作用

    1. counter 指示函数常用于次数(满足某一断言或条件)的统计: 2. 二维的离散指示函数 ⇒ assignment solution xij∈{0,1},∑jxij=1 ∑jxij=1:行和为 ...

  3. Linux学习总结(4)——Centos6.5使用yum安装mysql——快速上手必备

    第1步.yum安装mysql [root@stonex ~]#  yum -y install mysql-server 安装结果: Installed:     mysql-server.x86_6 ...

  4. 洛谷—— P1434 滑雪

    https://www.luogu.org/problem/show?pid=1434#sub 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜 ...

  5. hdu5384 AC自己主动机模板题,统计模式串在给定串中出现的个数

    http://acm.hdu.edu.cn/showproblem.php?pid=5384 Problem Description Danganronpa is a video game franc ...

  6. JIRA6.3.6 安装汉化破解指南

    JIRA6.3.6 安装汉化破解指南 近期试着安装了下JIRA,碰到了些问题.特记录下来,供后来者使用: 1.常规安装 1.1. 下载并安装jira 从官网下载atlassian-jira-6.3.6 ...

  7. jmeter--十三种断言方式介绍

    jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似: 用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 使用断言 ...

  8. DE1-SOC调试linux应用程序

    参考http://www.alterawiki.com/wiki/SoCEDSGettingStarted#Getting_Started_with_Linux_Application_Debuggi ...

  9. IOS获取手机设备所有应用

    //返回一个数组 1 NSMutableArray *applist = [[NSMutableArray alloc]init]; NSString *pathOfApplications = @& ...

  10. thinkphp事务机制

    thinkphp事务机制 一.总结 下面文章也要看,下面有抛出异常(自己提供错误信息那种) 1.事务机制(原子性):所有的事情都完成了就提交,否则回滚.电商里面用的多,付钱买东西的时候. 2.样例(简 ...