题目描述

给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的

输入输出格式

输入格式:

第一行:n;2≤n≤200000

接下来n行:每行两个实数:x y,表示一个点的行坐标和列坐标,中间用一个空格隔开。

输出格式:

仅一行,一个实数,表示最短距离,精确到小数点后面4位。

输入输出样例

输入样例#1:
复制

3
1 1
1 2
2 2
输出样例#1: 复制

1.0000

说明

0<=x,y<=10^9

题解

考场清晰的记得以前听过,并且记错做法还觉得自己是天才......

考场思路:按横轴排序,然后从左往右枚举每个点,把和该点的横坐标之差小于$ans$的点暴力算。

然后怕构造数据被卡(很多个点的横坐标差不多,竖轴差很多的话可以卡成$N$方),于是考虑用权值线段树优化竖轴,也就是从权值线段树中取竖轴在当前点加减ans范围的点暴力算。(考试$x,y$范围1e6)

这样应该就不会T了......

然后毒瘤评测人只给64M啊!哪里够开权值线段树啊!

于是把扫描线转了45°(也可以理解为把纸转45°),再做类暴力,这样就不好卡了。

然后就过了2333

 /*
qwerta
P1429 平面最近点对(加强版)
Accepted
100
代码 C++,1.16KB
提交时间 2018-10-19 15:55:35
耗时/内存
348ms, 2064KB
*/
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define R register
inline int read()
{
char ch=getchar();
int x=;
while(!isdigit(ch))ch=getchar();
while(isdigit(ch)){x=x*+ch-'';ch=getchar();}
return x;
}
const int MAXN=+,MAXX=+;
struct emm{
int x,y;
}a[MAXN];
const double k=-0.5;
bool cmp(emm qaq,emm qwq)
{
return qaq.y-k*qaq.x<qwq.y-k*qwq.x;
}
inline double dis(int u,int v)
{
return sqrt(1LL*(a[u].x-a[v].x)*(a[u].x-a[v].x)+1LL*(a[u].y-a[v].y)*(a[u].y-a[v].y));
}
double gen2=sqrt();
inline double je(int u,int v)
{
return abs(((a[u].y-k*a[u].x)-(a[v].y-k*a[v].x)))/gen2;
}
int main()
{
//freopen("dark.in","r",stdin);
//freopen("dark.out","w",stdout);
int n=read();
for(R int i=;i<=n;++i)
a[i].x=read(),a[i].y=read();
sort(a+,a+n+,cmp);
int l=,r=;
double ans=dis(,);
for(R int u=;u<=n;++u)
{
while(je(u,l)>ans)++l;
while(je(r+,u)<ans&&r<n)++r;
//cout<<u<<" "<<l<<" "<<r<<endl;
for(R int v=l;v<=r;++v)
if(u!=v)
ans=min(ans,dis(u,v));
}
printf("%.4f",ans);
return ;
}

「LuoguP1429」 平面最近点对(加强版)的更多相关文章

  1. P1429 平面最近点对[加强版] 随机化

    LINK:平面最近点对 加强版 有一种分治的做法 因为按照x排序分治再按y排序 可以证明每次一个只会和周边的六个点进行更新. 好像不算很难 这里给出一种随机化的做法. 前置知识是旋转坐标系 即以某个点 ...

  2. Luogu P1429 平面最近点对(加强版)(分治)

    P1429 平面最近点对(加强版) 题意 题目描述 给定平面上\(n\)个点,找出其中的一对点的距离,使得在这\(n\)个点的所有点对中,该距离为所有点对中最小的. 输入输出格式 输入格式: 第一行: ...

  3. P1429 平面最近点对(加强版)(分治)

    P1429 平面最近点对(加强版) 主要思路: 分治,将点按横坐标为第1关键字升序排列,纵坐标为第2关键字升序排列,进入左半边和右半边进行分治. 设d为左右半边的最小点对值.然后以mid这个点为中心, ...

  4. [Luogu1429]平面最近点对(加强版)

    题目大意: 平面最近点对. 思路: 分治. 首先将所有点排序 每次把当前区间分为两半,递归求解两个区间内部的情况,然后枚举区间两边的点. #include<cmath> #include& ...

  5. 「CF85E」 Guard Towers

    「CF85E」 Guard Towers 模拟赛考了这题的加强版 然后我因为初值问题直接炸飞 题目大意: 给你二维平面上的 \(n\) 个整点,你需要将它们平均分成两组,使得每组内任意两点间的曼哈顿距 ...

  6. 「Luogu4321」随机游走

    「Luogu4321」随机游走 题目描述 有一张 \(n\) 个点 \(m\) 条边的无向图,\(Q\) 组询问,每次询问给出一个出发点和一个点集 \(S\) ,求从出发点出发随机游走走遍这个点集的期 ...

  7. [LOJ#6437][BZOJ5373]「PKUSC2018」PKUSC

    [LOJ#6437][BZOJ5373]「PKUSC2018」PKUSC 试题描述 九条可怜是一个爱玩游戏的女孩子. 最近她在玩一个无双割草类的游戏,平面上有 \(n\) 个敌人,每一个敌人的坐标为 ...

  8. 「USACO16OPEN」「LuoguP3147」262144(区间dp

    P3147 [USACO16OPEN]262144 题目描述 Bessie likes downloading games to play on her cell phone, even though ...

  9. 零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术

    原文:零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术 本章所介绍的是便利且快速的内建工具Clone ? 本章所介绍的是便利且 ...

随机推荐

  1. Spring学习五----------Bean的配置之Bean的生命周期

    © 版权声明:本文为博主原创文章,转载请注明出处 Bean的生命周期 1.定义 2.初始化 3.使用 4.销毁 初始化和销毁的三种方式 1.实现org.springframework.beans.fa ...

  2. Linux trace使用入门

    概念 trace 顾名思义追踪信息,可通俗理解为一种高级打印机制,用于debug,实现追踪kernel中函数事件的框架.源代码位于:\kernel\trace\trace.c,有兴趣能够研究 撰写不易 ...

  3. python sax解析xml

    #books.xml<catalog> <book isbn="0-596-00128-2"> <title>Python & XML& ...

  4. FileOutPutStream 的写操作

    package xinhuiji_day07; import java.io.File;import java.io.FileNotFoundException;import java.io.File ...

  5. MySQL常见的数据类型(八)

    不多说,直接上干货! MySQL常见的数据类型 一.数据类型是什么? 数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 有一些数据是要存储为数字 ...

  6. 如何在IntelliJ IDEA在线查看源码的API文档

    https://blog.csdn.net/IFollowRivers/article/details/81604463

  7. grep命令:查看配置文件未注释行(转)

    FROM: https://linux.cn/article-6958-1.html 可以使用 UNIX/BSD/OS X/Linux 这些操作系统自身提供的 grep,sed,awk,perl或者其 ...

  8. 基于Apache POI 向xlsx写入数据

    [0]写在前面 0.1) these codes are from 基于Apache POI 的向xlsx写入数据 0.2) this idea is from http://cwind.iteye. ...

  9. Flask,ORM及模板引擎Jinja2

    跨域:http://blog.csdn.net/yannanxiu/article/details/53036508 下载flask_cors包 pip install flask-cors 使用fl ...

  10. Spring和ActiveMQ整合的完整实例

     Spring和ActiveMQ整合的完整实例 前言 这篇博文,我们基于Spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了 ...