2338: [HNOI2011]数矩形 - BZOJ
因为已经看了一眼题解,知道是算中点和长度,相同时构成一个矩形,所以就把所有的线段算出来,然后排序,相同的就更新答案
为了避免误差,我们都用整数存,中点直接相加就行了,没必要除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的更多相关文章
- bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
题目链接: 2338: [HNOI2011]数矩形 Time Limit: 20 Sec Memory Limit: 128 MB Description Input Output 题意: 思路 ...
- BZOJ 2338 HNOI2011 数矩形 计算几何
题目大意:给定n个点,求一个最大的矩形,该矩形的四个顶点在给定的点上 找矩形的方法是记录全部线段 若两条线段长度相等且中点重合 这两条线段就能够成为矩形的对角线 于是我们找到全部n*(n-1)/2条线 ...
- 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个点 求出一个最大的矩形. 矩形可以使斜着的.(不会告诉你样例我算了几年 这道题的一个潜规则 矩形面积都是整数 我也不知道为啥一定是整数 姑且是题目输出的要求吧. 所以用 ...
- BZOJ2338: [HNOI2011]数矩形
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2338 中学数学老师告诉我们,一个矩形的两条对角线相等,所以只要把所有的边拿出来,记录下中点坐标 ...
- [HNOI2011]数矩形
题目描述 最近某歌手在研究自己的全球巡回演出计划,他将所有心仪的城市都用平面上的一个点来表示,并打算从中挑选出 4 个城市作为这次巡回演出的地点. 为了显示自己与众不同,他要求存在一个矩形使得挑选出的 ...
- 【计算几何】bzoj2338 [HNOI2011]数矩形
对于两条线段,若其中点重合,且长度相等,那么它们一定是某个矩形的对角线. N*N地处理出所有线段,排序,对每一部分中点重合.长度相等的线段进行暴力枚举,更新答案. 用 long double 注意EP ...
随机推荐
- Jersey(1.19.1) - Hello World, Get started with Jersey using the embedded Grizzly server
Maven Dependencies The following Maven dependencies need to be added to the pom: <dependency> ...
- Memcached学习(三)
通过Java客户端实现与Memcached的交互,Java客户端的实现了使用了开源的Memcached-Java-Client,开源地址在GitHub上. 如下是通过该开源库实现的Memcached交 ...
- 20141014--判断语句switch case
1. switch case break(跳出) 距离break 最近的大括号,跳出这个大括号,执行大括号之后的命令 switch case 必须与 break 一同使用. 分别输入月份 几号 输出是 ...
- [C#]线程处理
线程处理用于使程序能够执行并发处理,同时执行多个操作.C#中有三种线程的使用方法,BackgroundWorker组件.线程池.自己创建使用线程,接下来分别介绍如何使用. 1.使用Background ...
- 当里个当,免费的HTML5连载来了《HTML5网页开发实例详解》连载(一)
读懂<HTML5网页开发实例详解>这本书 你还在用Flash嘛?帮主早不用了 乔布斯生前在公开信“Flash之我见”中预言:像HTML 5这样在移动时代中创立的新标准,将会在移动设备上获得 ...
- Error LNK2001 无法解析的外部符号 的几种情况及解决办法
最近遇到的关于VS里编译出现的“无法解析的外部符号”问题,在网上寻求解决办=办法时查到下面的博客内容,作者讲解的挺全面的,作为收藏以备将来查询. 原文http://blog.csdn.net/shen ...
- Hyper-V 虚拟机连接外部网络
Hyper-V创建好虚拟机之后,在默认配置下是没有网络连接的,这个时候就需要进行简单的配置,即可让虚拟机连接外部网络: 在Hyper-V管理器中,右键点击后出现菜单,选择"虚拟交换机管理器& ...
- mapper配置
一:查询 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC &q ...
- C# Json数据反序列化为Dictionary并根据关键字获取指定值1
Json数据: { "dataSet": { "header": { "returnCode": "0", " ...
- jquery nicescroll 配置参数
jQuery滚动条插件兼容ie6+.手机.ipad http://www.areaaperta.com/nicescroll/ jQuery(function($){ $("#scrollI ...