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

为了避免误差,我们都用整数存,中点直接相加就行了,没必要除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. 网易新闻RSS阅读器

    首先需要分析网易RSS订阅中心的网页布局情况. 网易RSS订阅中心:http://www.163.com/rss/ 你会发现RSS文件由一个<channel>元素及其子元素组成,除了频道本 ...

  2. Entity Framework 6.1-Code First

    原文:Entity Framework 6.1-Code First Code First-代码优先,先创建好领域模型.新建MyDbContext继承DbContext.根据代码自动生成数据库 Cod ...

  3. sql server 判断日期当前月有多少天

    declare @tm datetime set @tm = CONVERT(datetime,'2013-3-12')declare @days intselect @days = case whe ...

  4. Xcode7中添加3DTouch

    首先是插件SBShortcutMenuSimulator的安装 1.git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.g ...

  5. mysql5.7版本免安装配置教程

    自己花了两天时间才搞清楚,希望对新手有一定帮助,有问题可以联系哦! mysql分为安装版本msi,免安装要压缩版本ZIP,下载网址:http://dev.mysql.com/downloads 免安装 ...

  6. 32位系统下使用4GB内存

    64位系统的驱动还有不少缺陷,果断重装回32位系统,但是4gb的内存,明显是浪费啊. 所以必须利用起来. 我没有采用不稳定的破解内核的做法,采用了虚拟硬盘的做法.因为个人觉得这样其实利用效率更高. 方 ...

  7. 【leetcode】365. Water and Jug Problem

    题目描述: You are given two jugs with capacities x and y litres. There is an infinite amount of water su ...

  8. htm5实现视差动画

    requestAnimationFrame.js window.requestAnimFrame = (function() { return window.requestAnimationFrame ...

  9. lex&yacc

    LEX: yytext 数组包含匹配模式的文本; 使词法分析程序工作的两条规则是:1. lex 模式只匹配输入字符或字符串一次.2. lex 执行当前输入的最长可能匹配的动作. 由 lex 产生的词法 ...

  10. 怎样在Android SDK 下查看应用程序输出日志的方法

          该文章源于安卓教程网(http://android.662p.com),转载时要注明文章的来自和地址,感谢你的支持. 在Android程序中可以使用 android.util.Log 类来 ...