P1257 平面上的最接近点对 【分治归并】

题目描述

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

输入格式

第一行一个整数 nn,表示点的个数。

接下来 nn 行,每行两个实数 x,yx,y ,表示一个点的行坐标和列坐标。

输出格式

仅一行,一个实数,表示最短距离,四舍五入保留 44 位小数。

输入输出样例

输入 #1复制

3
1 1
1 2
2 2

输出 #1复制

1.0000

思路

这道题本弱鸡参考了洛谷一位大佬的,模板和归并排序差不多

一些必要提一下的区别是

1.归并逆序对(多少组逆序对)的属性是sum(求和),sum也会用于归并过程代码中

归并结果表达式为

res=merge_sort(l,mid)+merge_sort(mid+1,r)

归并过程表达式为

res+=mid-i+1;

2.此题的属性是min,min也会由于归并过程代码中

你可能感兴趣的:(分治,归并,笔记,c++)