P13851 [CERC 2023] Going to the Moon

题目描述

爱丽丝和鲍勃正在他们豪宅外的沙地里玩一个游戏。地上画了一个圆,代表月亮,他们各自选择一个位置站立(可以在月亮内部、边界上或外部)。游戏的目标是:其中一名玩家尽可能快地跑向另一名玩家,但在途中必须触碰到月亮。 给定月亮、爱丽丝和鲍勃的位置,求从一名玩家出发,途中至少触碰(或穿过)月亮的边界或内部,并最终到达另一名玩家位置的最短路径长度。

输入格式

第一行包含一个整数 $T$,表示测试用例的数量。 接下来 $T$ 行中,每行包含 7 个用空格分隔的整数 $x_A, y_A, x_B, y_B, x_C, y_C, r$,分别表示爱丽丝的位置 $A = (x_A, y_A)$,鲍勃的位置 $B = (x_B, y_B)$,圆心 $C = (x_C, y_C)$ 以及半径 $r$。

输出格式

对于每个测试用例,输出一个实数,表示从 $A$ 到 $B$ 的最短路径长度,并且该路径至少触碰到圆 $C$(半径 $r$)的内部或边界。 当输出结果与标准答案的相对或绝对误差不超过 $10^{-6}$ 时,视为正确。

说明/提示

### 注释 下图展示了第一个测试用例的最优解路径: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/rnv9of0l.png) :::align ### 输入限制 - $1 \leq T \leq 10^3$ - $-10^3 \leq x_A, y_A, x_B, y_B, x_C, y_C \leq 10^3$ - $0 \leq r \leq 10^3$ --- 翻译由 ChatGPT-5 完成