【SSL】1668小车载人问题
Time Limit:1000MS Memory Limit:65536K
Description
甲、乙同时从A地出发要尽快到达B地。出发时A地有带一人的小车。可是这辆车除了驾驶员外只能带一个人。又知甲、乙两人步行速度相同。问怎样得用小车才能使两个尽快同时到达。
Input
仅一行,三个数据分别表示AB两地的距离s,人的速度,车的速度
Output
两人同时到达B点的最短时间(结果保留小数点后4位)。
Sample Input
120 5 25
Sample Output
9.6000
思路
二分汽车掉头距离
计算出时间
比较两个人用时
代码
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
double s,pv,cv;
double l,r,mid,timea,timeb,t1,t2;
scanf("%lf%lf%lf",&s,&pv,&cv);
l=0,r=s;
do
{
mid=(l+r)/2.0;
timea=mid/cv;
timeb=(mid-timea*pv)/(pv+cv);
t1=(timea+(s-mid)/pv);
t2=(timea+timeb+(s-(timea+timeb)*pv)/cv);
if(t1<t2)r=mid;
else l=mid;
}while(fabs(t1-t2)>0.000001);
printf("%.4lf",t1);
return 0;
}