用的是二分时间的做法
#include<bits/stdc++.h>
using namespace std;
int main(){
int T;scanf("%d",&T);
while(T--){
double n,p1,v1,p2,v2;
scanf("%lf%lf%lf%lf%lf",&n,&p1,&v1,&p2,&v2);
if(p1>p2){
double s=p1;p1=p2;p2=s;
s=v1;v1=v2;v2=s;
}
double l=0,r=min(min(p1+n,n-p1+n)/v1,min(p2+n,n-p2+n)/v2);
r=min(r,min(max(p1/v1,min(n-p2+n-p1,p2-p1+n-p1)/v2),max((n-p2)/v2,min(p2+p1,p2+p2-p1)/v1)));
while(r-l>=1e-7){
double mid=(l+r)*0.5,s1=v1*mid,s2=v2*mid;
if(s1>=p1&&s2>=n-p2&&(s1+s2>=n-p1+p2||(s1+s2>=n+p1+n-p2&&s1>=2*p1&&s2>=2*(n-p2))||(s2>=2*(n-p2)&&(s1-p1)*0.5+s2-n+p2-n+p2>=p2-p1)||(s1>=2*p1&&s1-p1-p1+(s2-n+p2)*0.5>=p2-p1)))
r=mid;
else l=mid;
}
printf("%.7lf\n",r);
}
return 0;
}
但是过不了