题号:NC54706
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
They takes us for fools. The artifact you brought back from the Pyramid began emitting a signal. One that reaches deep into... the Black Garden. Once again, we are beckoned into their trap. They expect us to follow the signal. To discover where it leads. Fine. We will play their games. But this time, with caution... not curiosity.
救赎之园(圆?)是第一人称射击网游《命运2》在10月推出的6人合作副本。在它的最后一关,六个人需要合作完成一次”连线“以破除BOSS的护盾,从而击败BOSS。
(如图,一次成功的”连线“,射线从源点发出,经过四个人连接到BOSS,完成一次”连线“。av70298289)
在这里,为了简化问题,只考虑一个人的情况。以下是问题的描述。
在一个二维平面直角坐标系中,x轴上有两个点,一个为射线的发射器;一个为射线的接收器,即为实际问题中的BOSS。平面上还有一个点,为实际问题中的一个人,它既是一个接收器,也是一个发射器。
射线源会在

米的距离内搜寻离它最近的一个接收器A,如果有,就发出一条射线连接上接收器A;如果A是BOSS,那么”连线“成功;否则A会成为新的发射器(因为A不是BOSS,就是一个人),不再能接收射线,并搜寻在它

米范围内的其它接收器。以此类推,直到”连线“成功。
注意开始”连线"后,人不能再进行移动,否则会重新计算“连线”。
给定发射器、接收器和人的坐标(单位:米),试求出人至少要移动多少米才能完成一次成功的”连线“。如果不能完成,输出

。你也可以以浮点数的形式输出

,例如

。
输入描述:
一开始一个
,表示数据组数。
接下来T组数据,每组数据有四行,第一行为一个正整数
,表示射线发射的最远距离。第二行为一个整数
,表示x轴上发射器的x轴坐标。第三行为一个整数
,表示x轴上接收器(BOSS)的x轴坐标。第四行为两个整数
,表示平面上一个人的坐标。坐标系的长度单位均为米。
保证
.
输出描述:
一个浮点数
,表示人所需移动的最短距离。如果无法完成"连线",输出
或
。
设你的输出为
,答案为
,若误差
,则你的输出视为正确。
示例1
输出
复制
4.6763845620
0.0000000000
说明
对第一组数据:
人由P移动到P',然后开始"连线".
对第二组数据:
一开始就能直接"连线",所以人无需移动。