[HNOI2011]数矩形
题目描述
最近某歌手在研究自己的全球巡回演出计划,他将所有心仪的城市都用平面上的一个点来表示,并打算从中挑选出 4 个城市作为这次巡回演出的地点。
为了显示自己与众不同,他要求存在一个矩形使得挑选出的 4 个点恰好是这个矩形的 4 个顶点,并且希望这个矩形的面积最大。
这可急坏了其经纪人,于是他向全球歌迷征集方案,当然你这位歌迷一定不会错过这个机会。
输入输出格式
输入格式:
从文件input.txt中读入数据,输入文件的第一行是一个正整数NN ,表示平面上点的个数(即某歌手心仪的城市数)。接下来的NN 行,每行是由空格隔开的两个整数X_iXi 和Y_iYi ,表示其对应点的坐标。20%的数据满足N\leq 500N≤500 ,100%的数据满足N\leq 1500N≤1500 ,-10^8\leq X_i,Y_i\leq 10^8−108≤Xi,Yi≤108 ,且输入数据保证答案存在。
输出格式:
输出文件 output.txt 仅包含一个非负整数,表示最大的矩形面积。
输入输出样例
8
-2 3
-2 -1
0 3
0 -1
1 -1
2 1
-3 1
-2 1
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long lol;
struct point
{
lol x,y;
lol operator *(const point &b) const
{
return x*b.y-y*b.x;
}
point operator -(const point &b) const
{
return (point){x-b.x,y-b.y};
}
point operator +(const point &b) const
{
return (point){x+b.x,y+b.y};
}
}a[];
struct Node
{
lol l;
point v,mid;
}e[];
int n,cnt;
lol ans;
bool cmp(Node a,Node b)
{
if (a.l==b.l)
{
if (a.mid.x==b.mid.x) return a.mid.y<b.mid.y;
return a.mid.x<b.mid.x;
}
return a.l<b.l;
}
int main()
{int i,j,k,l;
cin>>n;
for (i=;i<=n;i++)
{
scanf("%lld%lld",&a[i].x,&a[i].y);
}
for (i=;i<=n;i++)
{
for (j=;j<=i-;j++)
{
e[++cnt].mid=a[i]+a[j];
e[cnt].v=a[i]-a[j];
e[cnt].l=(a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y);
}
}
sort(e+,e+cnt+,cmp);
for (i=;i<=cnt;i=j+)
{
j=i;
while (j+<=cnt&&e[j+].l==e[i].l&&e[j+].mid.x==e[i].mid.x&&e[j+].mid.y==e[i].mid.y) j++;
for (k=i;k<=j;k++)
{
for (l=i;l<=k-;l++)
{
ans=max(ans,abs(e[k].v*e[l].v)>>);
}
}
}
printf("%lld",ans);
}
[HNOI2011]数矩形的更多相关文章
- bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
题目链接: 2338: [HNOI2011]数矩形 Time Limit: 20 Sec Memory Limit: 128 MB Description Input Output 题意: 思路 ...
- bzoj2338[HNOI2011]数矩形 计算几何
2338: [HNOI2011]数矩形 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1535 Solved: 693[Submit][Status ...
- 【题解】Luogu P3217 [HNOI2011]数矩形
原题链接:P3217 [HNOI2011]数矩形 什么??!怎么又是计算几何,您钛毒瘤了-- 这道题真的是毒瘤 凸包?旋转卡壳? 看一下数据,N<=1500? 暴力 没错,就是暴力,N^2没毛病 ...
- 【BZOJ2338】[HNOI2011]数矩形 几何
[BZOJ2338][HNOI2011]数矩形 题解:比较直观的做法就是枚举对角线,两个对角线能构成矩形当且仅当它们的长度和中点相同,然后用到结论:n个点构成的矩形不超过n^2.5个(不会证),所以两 ...
- luogu P3217 [HNOI2011]数矩形
LINK:数矩形 题意:给出n个点 求出一个最大的矩形. 矩形可以使斜着的.(不会告诉你样例我算了几年 这道题的一个潜规则 矩形面积都是整数 我也不知道为啥一定是整数 姑且是题目输出的要求吧. 所以用 ...
- 2338: [HNOI2011]数矩形 - BZOJ
因为已经看了一眼题解,知道是算中点和长度,相同时构成一个矩形,所以就把所有的线段算出来,然后排序,相同的就更新答案 为了避免误差,我们都用整数存,中点直接相加就行了,没必要除2,长度也只要平方就行了, ...
- BZOJ2338: [HNOI2011]数矩形
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2338 中学数学老师告诉我们,一个矩形的两条对角线相等,所以只要把所有的边拿出来,记录下中点坐标 ...
- 【计算几何】bzoj2338 [HNOI2011]数矩形
对于两条线段,若其中点重合,且长度相等,那么它们一定是某个矩形的对角线. N*N地处理出所有线段,排序,对每一部分中点重合.长度相等的线段进行暴力枚举,更新答案. 用 long double 注意EP ...
- 【bzoj2338】[HNOI2011]数矩形 计算几何
题目描述 题解 计算几何 由于对角线平分且相等的四边形是矩形,因此我们可以把每条对角线存起来,按照对角线长度和中点位置为关键字排序,这样对于每个相同长度和中点的对角线就排到了一起. 于是对于每段可能形 ...
随机推荐
- 福州大学W班-需求分析评分排名
作业链接 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1019 作业要求 1.需求文档 1) 参考& ...
- beta冲刺4
昨天的问题: 我的社团数据库表项的处理,代码修改后结果无法显示. 帖子内容无法显示出来. 首页图像未替换 登陆整合没有完成 今天的完成: 服务器部署成功 页面背景修改.(已上传,未确认实装.) 任务截 ...
- c字符数组
一.PTA实验作业 题目1:统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 定义一个长度为1000的字符数组str[1000] 在定义 i=0,cnt=0:cnt用来记录单词的个数 ...
- Markdown文本测试
一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 1. 这是一 2. 这是二 这是无序符号 My Github 这是着重表示 这是斜体 一级粗体 二级斜体 cin >> a; c ...
- python的Collections 模块
Collections 模块 知识点 Counter 类 defaultdict 类 namedtuple 类 在这个实验我们会学习 Collections 模块.这个模块实现了一些很好的数据结构,它 ...
- 使用XIB实现嵌套自定义视图
在进行iOS开发的过程中,对于一些复杂的界面,我们可以通过Interface Builder这个Xcode集成的可视化界面编辑工具在完成,这回节省大部分时间以及代码量.它的使用方法这里不做介绍了,这次 ...
- 201621123027 Week02-Java基本语法与类库
Week02-Java基本语法与类库 1.本周学习总结 关键词:基本语法,数据类型,包装类 本周讲了Java的基本数据类型和包装类: 数据类型主要分为八类(byte,short,int,long,do ...
- java8-Stream之数值流
在Stream里元素都是对象,那么,当我们操作一个数字流的时候就不得不考虑一个问题,拆箱和装箱.虽然自动拆箱不需要我们处理,但依旧有隐含的成本在里面.Java8引入了3个原始类型特化流接口来解决这个问 ...
- REST or RPC?
1 概念 1.1 RPC RPC(Remote Procedure Call)-远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存 ...
- js 时间戳 vue 时间戳的转换 ?
在没有用vue做项目之前 也遇到过戳转换的问题 直接函数 调用 方法 这个也可以写成vue的 把function去掉 formatDate后面加冒号 就可以了 当然这个不是原创 但是是谁的我忘记了 ...