平面最近点对模板[luogu P1429]
%:pragma GCC optimize() #include<bits/stdc++.h> #define DB double #define m (((l)+(r))>>1) #define sqr(x) ((x)*(x)) using namespace std; ; int n,tot; DB ans; struct point {DB x,y;}a[N],now[N]; inline DB dis(point u,point v) {return sqrt(sqr(u.x-v.x)+sqr(u.y-v.y));} inline bool cmp(point u,point v) {return u.x==v.x?u.y<v.y:u.x<v.x;} inline bool cmp0(point u,point v) {return u.y<v.y;} DB solve(int l,int r) { ==r) return dis(a[l],a[r]); DB ret=min(solve(l,m),solve(m+,r)); ; for (int i=l; i<=r; i++) if (fabs(a[i].x-a[m].x)<ret) now[++k]=a[i]; sort(now+,now++k,cmp0); ; i<k; i++) ; j<=k&&now[j].y-now[i].y<ret; j++) ret=min(ret,dis(now[i],now[j])); return ret; } int main() { scanf("%d",&n); ; i<=n; i++) scanf("%lf%lf",&a[i].x,&a[i].y); ) ; else ) ],a[])),; sort(a+,a++n,cmp); printf(,n)); ; }
平面最近点对模板[luogu P1429]的更多相关文章
- 『Raid 平面最近点对』
平面最近点对 平面最近点对算是一个经典的问题了,虽然谈不上是什么专门的算法,但是拿出问题模型好好分析一个是有必要的. 给定\(n\)个二元组\((x,y)\),代表同一平面内的\(n\)个点的坐标,求 ...
- Luogu P1429 平面最近点对(加强版)(分治)
P1429 平面最近点对(加强版) 题意 题目描述 给定平面上\(n\)个点,找出其中的一对点的距离,使得在这\(n\)个点的所有点对中,该距离为所有点对中最小的. 输入输出格式 输入格式: 第一行: ...
- Luogu 1429 平面最近点对 | 平面分治
Luogu 1429 平面最近点对 题目描述 给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 输入输出格式 输入格式: 第一行:n:2≤n≤200000 ...
- P1429 平面最近点对(加强版)(分治)
P1429 平面最近点对(加强版) 主要思路: 分治,将点按横坐标为第1关键字升序排列,纵坐标为第2关键字升序排列,进入左半边和右半边进行分治. 设d为左右半边的最小点对值.然后以mid这个点为中心, ...
- P1429 平面最近点对[加强版] 随机化
LINK:平面最近点对 加强版 有一种分治的做法 因为按照x排序分治再按y排序 可以证明每次一个只会和周边的六个点进行更新. 好像不算很难 这里给出一种随机化的做法. 前置知识是旋转坐标系 即以某个点 ...
- Vijos 1012 清帝之惑之雍正 平面最近点对(分治)
背景 雍正帝胤祯,生于康熙十七年(1678)是康熙的第四子.康熙61年,45岁的胤祯继承帝位,在位13年,死于圆明园.庙号世宗. 胤祯是在康乾盛世前期--康熙末年社会出现停滞的形式下登上历史舞台的.复 ...
- 「LuoguP1429」 平面最近点对(加强版)
题目描述 给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 输入输出格式 输入格式: 第一行:n:2≤n≤200000 接下来n行:每行两个实数:x y, ...
- 计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点
平面最近点对,即平面中距离最近的两点 分治算法: int SOLVE(int left,int right)//求解点集中区间[left,right]中的最近点对 { double ans; //an ...
- HDU-4631 Sad Love Story 平面最近点对
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4631 数据是随机的,没有极端数据,所以可以分段考虑,最小值是一个单调不增的函数,然后每次分治算平面最近 ...
随机推荐
- SpringBoot war包部署到Tomcat服务器
(1)pom.xml文件修改<packaging>war</packaging>,默认是jar包,<build>节点中增加<finalName>spri ...
- hdu 3832 Earth Hour bfs
Earth Hour Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Prob ...
- ubuntu14.04 Keras框架搭建
>>>sudo su >>> pip3 install -U --pre pip setuptools wheel >>> pip3 instal ...
- PySpark笔记
spark源码位置:https://github.com/apache/spark Spark Core核心RDD及编程 什么是RDD:1.是一个抽象类不能直接使用,在子类中实现抽象方法是一个抽象类不 ...
- 学习笔记49—matlab FDR校正
matlab自带函数mafdr,当ttest数较多时,可直接用[FDR, Q]=mafdr(P):但是Storey procedure在p值少于1000个时会崩溃,此时应改用BH FDR方法:mafd ...
- JavaWeb知识点总结
>一: 创建Web项目项目说明:1.java Resources:java源文件2.WebContent:网页内容html.css.js.jsp.资源.配置文件等 HTML:Hyper Text ...
- pdf can't copy text 无法复制文字
有些 pdf 是通过图片弄出来的,或者被 protect 了. 我们会无法 copy 里面的字. 这个时候可以用 OCR (Optical character recognition) 就是从图片中识 ...
- Shell脚本中的并发(转)
转自http://blog.csdn.net/wangtaoking1/article/details/9838571 主要记录一下Shell脚本中的命令的并发和串行执行. 默认的情况下,Shell脚 ...
- English trip V1 - B 2. May I Help You? 它是多少钱? Teacher:Lamb Key:
In this lesson you will learn to ask for things in shops 这节课您将学习如何在商店中寻找东西 课上内容(Lesson) 你通常去哪里购物? W ...
- Node版本管理nvm, npm
nvm(node version manger) Node版本管理 nvm是一个简单的bash script来管理多个活动的node.js版本. 安装nvm: 具体看git:https://githu ...