题解:CF1886B Fear of the Dark
看到图第一眼以为是分类讨论,一看题面,原来不是求最短路,而且坐标确定,距离相同,那就好做了。
思考一下什么情况下有一条合法路径:首先起点和终点都必须被灯光覆盖,其次覆盖起点和终点的灯光范围需要相交。
注意,覆盖起点和终点的灯可以是同一盏灯。
某盏灯覆盖起点或终点所需
设
AC 记录
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
inline double dis(double xa,double ya,double xb,double yb)
{
return sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb));
}
int main()
{
int T; scanf("%d",&T);
while(T--)
{
double px,py,lx[2],ly[2];
scanf("%lf%lf%lf%lf%lf%lf",&px,&py,&lx[0],&ly[0],&lx[1],&ly[1]);
double ans=1e18;
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
{
double w=max({
dis(0,0,lx[i],ly[i]),
dis(px,py,lx[j],ly[j]),
dis(lx[i],ly[i],lx[j],ly[j])/2.0
});
ans=min(ans,w);
}
printf("%.10lf\n",ans);
}
return 0;
}