题目链接:P1258 小车问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目大意:
两个人一起去一个地方,可以坐车每次只能坐一个人,求两个人同时到地方的最少时间
思路:
用二分查找:先用车载一个人走到一定的位置然后返回载另一个人,两个人在一起到达地方。查找的就是那个位置
坑点:
数据类型应该是double,如果是整型会省去小数部分
当车载第一个人的时候第二个人也在步行前进,同样将第一个放下后,他就开始步行前进
代码:(非原创)
#include<cstdio>
#include<cmath>
int main()
{
double s,s1,s2,v1,v2,t1,t2,p;
double a,b;
scanf("%lf%lf%lf",&s,&v1,&v2);
s1=0;
s2=s;
do//相当于二分不断找适和的用车先载一个人走在回来接第二个人一起走的距离
{
p=(s1+s2)/2.0;//路程的一半
a=p/v2;//人的速度走一半的路程花的时间
b=(p-a*v1)/(v1+v2);//车和人相向而行直到相遇所用的时间
t1=a+(s-p)/v1;//一半路程热走一半坐车走所用的时间
t