因为已经看了一眼题解,知道是算中点和长度,相同时构成一个矩形,所以就把所有的线段算出来,然后排序,相同的就更新答案

为了避免误差,我们都用整数存,中点直接相加就行了,没必要除2,长度也只要平方就行了,不用开根,算面积就用叉积算,这样做就完全没有误差了

虽然复杂度本来是不行的但是出题人没想卡咱,就过了

 const
maxn=;
type
point=record
x,y:longint;
end;
segment=record
aa,bb:point;
x,y:longint;
l:int64;
end;
var
a:array[..maxn]of point;
seg:array[..maxn*maxn]of segment;
n,tot:longint;
ans:int64; procedure swap(var x,y:segment);
var
t:segment;
begin
t:=x;x:=y;y:=t;
end; procedure sort(l,r:longint);
var
i,j:longint;
x:segment;
begin
i:=l;
j:=r;
x:=seg[(l+r)>>];
repeat
while (x.x<seg[i].x) or ((x.x=seg[i].x) and (x.y<seg[i].y)) or ((x.x=seg[i].x) and (x.y=seg[i].y) and (x.l<seg[i].l)) do
inc(i);
while (x.x>seg[j].x) or ((x.x=seg[j].x) and (x.y>seg[j].y)) or ((x.x=seg[j].x) and (x.y=seg[j].y) and (x.l>seg[j].l)) do
dec(j);
if i<=j then
begin
swap(seg[i],seg[j]);
inc(i);
dec(j);
end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j);
end; procedure init;
var
i,j:longint;
begin
read(n);
for i:= to n do
with a[i] do
read(x,y);
for i:= to n- do
for j:=i+ to n do
begin
inc(tot);
with seg[tot] do
begin
aa:=a[i];
bb:=a[j];
x:=a[i].x+a[j].x;
y:=a[i].y+a[j].y;
l:=sqr(int64(a[i].x-a[j].x))+sqr(int64(a[i].y-a[j].y));
end;
end;
sort(,tot);
end; function cj(a,b,c:point):int64;
begin
exit(abs(int64(a.x-b.x)*int64(c.y-b.y)-int64(c.x-b.x)*int64(a.y-b.y)));
end; procedure up(var x:int64;y:int64);
begin
if x<y then x:=y;
end; procedure work;
var
l,r,i,j:longint;
begin
l:=;
r:=;
while l<=tot do
begin
while (r<tot) and (seg[r+].x=seg[l].x) and (seg[r+].y=seg[l].y) and (seg[r+].l=seg[l].l) do
inc(r);
for i:=l to r- do
for j:=i+ to r do
up(ans,cj(seg[i].aa,seg[i].bb,seg[j].aa));
l:=r+;
r:=l;
end;
write(ans);
end; begin
init;
work;
end.

2338: [HNOI2011]数矩形 - BZOJ的更多相关文章

  1. bzoj-2338 2338: [HNOI2011]数矩形(计算几何)

    题目链接: 2338: [HNOI2011]数矩形 Time Limit: 20 Sec  Memory Limit: 128 MB Description Input   Output 题意: 思路 ...

  2. BZOJ 2338 HNOI2011 数矩形 计算几何

    题目大意:给定n个点,求一个最大的矩形,该矩形的四个顶点在给定的点上 找矩形的方法是记录全部线段 若两条线段长度相等且中点重合 这两条线段就能够成为矩形的对角线 于是我们找到全部n*(n-1)/2条线 ...

  3. bzoj2338[HNOI2011]数矩形 计算几何

    2338: [HNOI2011]数矩形 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1535  Solved: 693[Submit][Status ...

  4. 【题解】Luogu P3217 [HNOI2011]数矩形

    原题链接:P3217 [HNOI2011]数矩形 什么??!怎么又是计算几何,您钛毒瘤了-- 这道题真的是毒瘤 凸包?旋转卡壳? 看一下数据,N<=1500? 暴力 没错,就是暴力,N^2没毛病 ...

  5. 【BZOJ2338】[HNOI2011]数矩形 几何

    [BZOJ2338][HNOI2011]数矩形 题解:比较直观的做法就是枚举对角线,两个对角线能构成矩形当且仅当它们的长度和中点相同,然后用到结论:n个点构成的矩形不超过n^2.5个(不会证),所以两 ...

  6. luogu P3217 [HNOI2011]数矩形

    LINK:数矩形 题意:给出n个点 求出一个最大的矩形. 矩形可以使斜着的.(不会告诉你样例我算了几年 这道题的一个潜规则 矩形面积都是整数 我也不知道为啥一定是整数 姑且是题目输出的要求吧. 所以用 ...

  7. BZOJ2338: [HNOI2011]数矩形

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2338 中学数学老师告诉我们,一个矩形的两条对角线相等,所以只要把所有的边拿出来,记录下中点坐标 ...

  8. [HNOI2011]数矩形

    题目描述 最近某歌手在研究自己的全球巡回演出计划,他将所有心仪的城市都用平面上的一个点来表示,并打算从中挑选出 4 个城市作为这次巡回演出的地点. 为了显示自己与众不同,他要求存在一个矩形使得挑选出的 ...

  9. 【计算几何】bzoj2338 [HNOI2011]数矩形

    对于两条线段,若其中点重合,且长度相等,那么它们一定是某个矩形的对角线. N*N地处理出所有线段,排序,对每一部分中点重合.长度相等的线段进行暴力枚举,更新答案. 用 long double 注意EP ...

随机推荐

  1. Category

    Category 首先我们来谈谈Category. Objective-C提供了一种与众不同的方式——Catagory,可以动态的为已经存在的类添加新的行为.这样可以保证类的原始设计规模较小,功能增加 ...

  2. SQLSERVER2012数据库还原

    (1)还原已存在数据库 还原时提示失败,因为数据库正在使用,无法获得独占访问权.解决办法,先分离已存在的数据库,再执行还原操作. 确定后居然成功了,因为我是先使用(2)还原数据库后直接尝试(1)方法还 ...

  3. Microsoft.Practices.EnterpriseLibrary.Logging的使用

    翻译 原文地址:http://www.devx.com/dotnet/Article/36184/0/page/1  原文作者:Thiru Thangarathinam (好强大的名字) 翻译: fl ...

  4. oracle11g 创建用户并授权

    Oracle创建用户并给用户授权查询指定表或视图的权限用sys账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAUL ...

  5. java 调用bash shell脚本阻塞的小问题的解决

    java  调用bash shell脚本阻塞的小问题的解决 背景 使用java实现的web端,web端相应用户的界面操作,使用java调用bash实现的shell脚本进行实际的操作,操作完成返回执行结 ...

  6. java web 简单的分页显示

    题外话:该分页显示是用 “表示层-控制层-DAO层-数据库”的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步. 思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指 ...

  7. 【leetcode】352. Data Stream as Disjoint Intervals

    问题描述: Given a data stream input of non-negative integers a1, a2, ..., an, ..., summarize the numbers ...

  8. pgpool常用命令

    启动pgpool pgpool -n -d > /tmp/pgpool.log >& & 停止pgpool pgpool stop pgbench的测试命令 pgbench ...

  9. Exploit搭建

    1,三连下小水管真是慢.去洗澡先. 2,环境变量Path里添加Python安装目录.直接cd到git下来的目录运行sqlmap.py 更新sqlmap,sqlmap.py –update 或 git ...

  10. Skyline中使用AxTE3DWindowEx打开新的一个球体

    在winform窗体中拖入AxTE3DWindowEx控件. using system; using system.Collections.Generic; using System.Drawing; ...