CF671A Recycling Bottles

题目描述

在 Kekoland 的回收日,Adil 和 Bera 前往 Central Perk 庆祝,在那里他们可以把地上的瓶子捡起来放进回收箱。 我们可以将 Central Perk 视为一个坐标平面。地上有 $n$ 个瓶子,第 $i$ 个瓶子的位置为 $(x_{i},y_{i})$。Adil 和 Bera 每次只能各自携带一个瓶子。 对于 Adil 和 Bera,两人的操作如下: 1. 选择停止或继续捡瓶子。 2. 如果选择继续,则选择一个瓶子并走向它。 3. 捡起这个瓶子并走向回收箱。 4. 回到第 1 步。 Adil 和 Bera 可以独立移动,他们可以同时捡瓶子,每个瓶子可以由两人中的任何一人捡起,也允许其中一人暂停,另一个人继续捡瓶子。 他们希望安排一个流程,使得两人行走距离之和(即 Adil 的总距离与 Bera 的总距离之和)尽可能小。当然,最后所有瓶子都必须被放进回收箱。

输入格式

输入的第一行包含六个整数 $a_{x}$、$a_{y}$、$b_{x}$、$b_{y}$、$t_{x}$ 和 $t_{y}$($0 \leq a_{x},a_{y},b_{x},b_{y},t_{x},t_{y} \leq 10^{9}$),分别表示 Adil、Bera 和回收箱的初始位置。 第二行包含一个整数 $n$($1 \leq n \leq 100000$),表示地上的瓶子数量。 接下来的 $n$ 行,每行包含两个整数 $x_{i}$、$y_{i}$($0 \leq x_{i},y_{i} \leq 10^{9}$),表示第 $i$ 个瓶子的位置。 保证 Adil、Bera、回收箱及所有瓶子的位置均两两不同。

输出格式

输出一个实数,表示 Adil 和 Bera 为将所有瓶子放进回收箱所需步行的最小总距离。只要你的答案和标准答案的绝对误差或相对误差不超过 $10^{-6}$,就会被判为正确。 即,设你的答案为 $a$,标准答案为 $b$,如果满足 $|a - b| / \max(1, |b|) \leq 10^{-6}$,则判为正确。

说明/提示

来看第一个样例。 Adil 将采取如下的路径:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF671A/9e150a5b7d96969b57a5b1f4dea00f000710a7e2.png)。 Bera 将采取如下的路径:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF671A/3884532a18b9773dea1f2047e6bbd80cd6d12185.png)。 Adil 的路径长度为 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF671A/d2c02d2d4b61a9b8e78355ce9a7fbc852f71e66b.png),Bera 的路径长度为 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF671A/da983b0763053dcb65ef9a22647e2063dd0571f6.png)。 由 ChatGPT 5 翻译