atcoder#ARC064C. [ARC064E] Cosmic Rays

[ARC064E] Cosmic Rays

配点 : 600600

問題文

xxyy 平面があります。 すぬけ君は座標 (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)(x_s, y_s)(xt,yt)(x_t, y_t)
  • 1N1,0001 \leq N \leq 1,000
  • 109xi,yi109-10^9 \leq x_i, y_i \leq 10^9
  • 1ri1091 \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

::

xNx_N yNy_N rNr_N

出力

すぬけ君が移動中に宇宙線を浴びる時間の最小値を出力せよ。 絶対誤差または相対誤差が 10910^{-9} 以下ならば正解となる。

-2 -2 2 2
1
0 0 1
3.6568542495

たとえば、図のように移動すればよいです。

e9c630751968b7051df5750b7ddc0e07.png

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

たとえば、図のように移動すればよいです。

fb82f6f4df5b22cffb868ce6333277aa.png

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

たとえば、図のように移動すればよいです。

d09006720c225cbe69eae3fd9c186e67.png