#ATarc064c. [ARC064E] Cosmic Rays

[ARC064E] Cosmic Rays

题目描述

xx yy 平面上,有一个名为すぬけ君的小点,他想从坐标 (xs, ys)(x_s,\ y_s) 移动到坐标 (xt, yt)(x_t,\ y_t)。すぬけ君可以以速度 11 向任意方向移动。这里,すぬけ君被视为没有大小的点。

平面上有 NN 个圆形屏障。第 ii 个屏障的圆心为 (xi, yi)(x_i,\ y_i),半径为 rir_i。这些屏障之间可能会重叠,也可能互相包含。

对于平面上的每一个坐标,如果该坐标不在任何一个屏障的内部,则该坐标会被宇宙射线照射。

すぬけ君希望在移动过程中尽可能少地暴露在宇宙射线下。请你求出すぬけ君在移动过程中暴露在宇宙射线下的最短时间。

输入格式

输入以如下格式从标准输入读入。

xsx_s ysy_s xtx_t yty_t NN x1x_1 y1y_1 r1r_1 x2x_2 y2y_2 r2r_2 \cdots xNx_N yNy_N rNr_N

输出格式

请输出すぬけ君在移动过程中暴露在宇宙射线下的最短时间。只要绝对误差或相对误差不超过 10910^{-9},即可视为正确。

样例 1

输入

-2 -2 2 2
1
0 0 1

输出

3.6568542495

样例 2

输入

-2 0 2 0
2
-1 0 2
1 0 2

输出

0.0000000000

样例 3

输入

4 -2 -2 4
3
0 0 2
4 0 1
0 4 1

输出

4.0000000000

说明/提示

限制条件

  • 所有输入均为整数。
  • 109 <= xs, ys, xt, yt <= 109-10^9\ <=\ x_s,\ y_s,\ x_t,\ y_t\ <=\ 10^9
  • (xs, ys)(xt, yt)(x_s,\ y_s) \neq (x_t,\ y_t)
  • 1 <=N<=1,0001\ <= N <= 1,000
  • 109 <= xi, yi <= 109-10^9\ <=\ x_i,\ y_i\ <=\ 10^9
  • 1 <=ri<=1091\ <= r_i <= 10^9

样例解释 1

例如,可以如图所示进行移动。

样例解释 2

例如,可以如图所示进行移动。

样例解释 3

例如,可以如图所示进行移动。

由 ChatGPT 4.1 翻译