能量护盾
类型:程序题

在一处被宇宙射线笼罩的星域中,你驾驶着一艘小型探索飞船,需要从坐标 (x_s, y_s) 航行到坐标 (x_t, y_t)。飞船可以以速度 1 向任意方向移动,自身视为一个点。

星域中分布着 N 个圆形能量护盾,第 i 个护盾的圆心为 (x_i, y_i),半径为 r_i。护盾之间可能相互重叠,也可能存在包含关系。飞船一旦进入某个护盾的内部,就能免受宇宙射线的伤害。若一个点不在任何护盾内部,则飞船会持续受到宇宙射线的照射。

你的目标是:在从起点到终点的航行过程中,尽可能减少受到宇宙射线照射的总时间。请你计算这个最小照射时间。

输入格式

第一行,四个整数 x_s, y_s, x_t, y_t,分别表示起点和终点的坐标。第二行,一个整数 N,表示圆形护盾的数量。接下来 N 行,每行三个整数 x_i, y_i, r_i,描述第 i 个护盾的圆心坐标和半径。

输出格式

输出一个实数,表示受到宇宙射线照射的最小时间,保留 10 位小数。

输入样例1

-2 -2 2 2
1
0 0 1

输出样例1

3.6568542495

输入样例2

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

输出样例2

0.0000000000

输入样例3

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

输出样例3

4.0000000000

说明提示

-10^9 ≤ x_s, y_s, x_t, y_t ≤ 10^9

(x_s, y_s) ≠ (x_t, y_t)

1 ≤ N ≤ 1000

-10^9 ≤ x_i, y_i ≤ 10^9

1 ≤ r_i ≤ 10^9

限制

时间限制:1000ms,内存限制:128MiB

代码编辑器 加载中...
留空使用题目默认限制
{{resultStatus.text}}
正在加载运行记录...
乐编题库AI助手
人工客服
微信扫码联系客服
历史对话
{{ s.title || '未命名对话' }}
{{ s.created_at }}
暂无历史对话
我能帮助你什么?