#WC023. 宇宙射线

宇宙射线

题目描述

xyxy 平面上,尘希望从 (xs,ys)(x_s, y_s) 移动到坐标 (xt,yt)(x_t, y_t)。尘可以以速度 11 向任意方向移动。

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

不在任何一个屏障内部的区域会被宇宙射线照射,尘希望在移动过程中尽可能少地暴露在宇宙射线下。请你求出尘在移动过程中暴露在宇宙射线下的最短时间。

限制条件

  • 所有输入均为整数。
  • 109xs,ys,xt,yt109-10^9 \leq x_s, y_s, x_t, y_t \leq 10^9
  • (xs,ys)(xt,yt)(x_s, y_s) \neq (x_t, y_t)
  • 1N1,0001 \leq N \leq 1,000
  • 109xi,yi109-10^9 \leq x_i, y_i \leq 10^9
  • 1 ri1091\ \leq r_i \leq 10^9

输入格式

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

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

输入 #1

-2 -2 2 2
1
0 0 1

输出 #1

3.6568542495

输入输出样例 #2

输入 #2

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

输出 #2

0.0000000000

输入输出样例 #3

输入 #3

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

输出 #3

4.0000000000

样例解释 1

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

样例解释 2

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

样例解释 3

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