P1258 小车问题

题目链接: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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值