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. Apache中PHP5.3 php5.4如何使用ZEND

    Apache中PHP5.3 php5.4如何使用ZEND 有一套zend加密程序,需要安装ZEND,经过多次尝试,结果如下 由于PHP有安全线程(TS)和非安全线程(NTS)区分,PHP官方网站上说, ...

  2. 字串乱序 PHP&JS

    <?php /** * 字串乱序 PHP&JS * * php 中把字串乱序后输出给客户机的 JAVASCRIPT , JAVASCRIPT 中恢复 * 在指定长度提取一个字符,并把这一 ...

  3. 分析器错误消息: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分

    关于错误提示:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决方案 不知怎么的,每次Win10升级后相应的注册器都恢复默认了,当我运行08版的asp项目时会报这个错. vs上的 ...

  4. 一个简单http请求的jmeter压测实战流程

    1.新建线程组 2.创建http请求 注意:接口路径中的参数值要写变量 3.创建txt文件,存多个参数值 4.创建csv文件,在csv中上传txt文件 5.variable name填写txt中参数值 ...

  5. 【Codeforces Round #429 (Div. 1) B】Leha and another game about graph

    [链接]点击打开链接 [题意] 给出一个连通图,并给每个点赋一个d值0或1或-1,要求选出一个边的集合,使得所有的点i要么d[i] == -1,要么  dgree[i] % 2 == d[i],dgr ...

  6. Redis源代码分析(八)--- t_hash哈希转换

    在上次的zipmap分析完之后,事实上关于redis源码结构体部分的内容事实上已经所有结束了.由于以下还有几个和结构体相关的操作类,就页把他们归并到struct包下了.这类的文件有:t_hash.c, ...

  7. Android 最简洁的获取联系人头像的代码

    ContentResolver cr = view.getContext().getContentResolver(); Uri uri = ContentUris.withAppendedId(Co ...

  8. sql基础知识集锦

    Sql常用语法 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT ...

  9. 编程——C语言的问题,堆栈

    堆和栈的区别一.预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结 ...

  10. WebService--CXF以及CXF与Spring的整合(jaxws:server形式配置)

    前言:好记性不如烂笔头,写博客的好处是,以前接触的东西即便忘记了,也可以从这里查找. Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来 ...