【洛谷p1258】小车问题

(……吓人,心有余悸)

小车问题【传送门】

洛谷算法标签::

(行吧它居然是个二分【解方程的我抖抖发瑟】)


 

作为一个写了一页演草纸才解出来的方程,显然我要好好写一写(希望不会半途而废)

  • 思路:

             先把其中一个人(甲)用车送到某个地方(暂且称那时的时间为t吧),然后车返回去接另一个人(乙),然后车载着乙到达终点(可怜的甲在线走路)。

  • 实现:

              设总路程为s,放下甲去接乙的时间为t车的速度b,人的速度为a最短时间为x。那么首先得到两个式纸:

              bt+a(x-t)=s;  ①

          at+a(bt-at)/(b+a)+b(x-t-(bt-at)/(b+a))=s;  ②(其中表示在小车返回途中乙走的路程,表示小车接到乙后的时间,表示小车载着乙走的路程

              解第一个方程,可以得到:x=(s-bt+at)/a;③

              联立①②,可以解得:bt(2+(b-a)/(b+a))-at(2+(b-a)/(b+a))=(b-a)x;

              令p=2+(b-a)/(b+a);则btp-atp=(b-a)x

              解得x=tp;④

              联立③④,得到:t=s/(pa+b-a);

              将t值再代回④中,得到x的值。

  • 代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstdlib>
using namespace std;
double s,a,b,t,x,p,q;
int main()
{
    scanf("%lf%lf%lf",&s,&a,&b);
    p=(3*b+a)/(a+b);q=p;//相当于p=2+(b-a)/(b+a)【我化辽一下简
    p*=a;
    p=p+b-a;
    s/=p;//这里把s当作辽t,以上三步都在计算t=s/(pa+b-a);
    x=s*q;//相当于x=t*p(因为p值改变辽所以令p=q)
    printf("%.6lf",x);
    return 0;
}

end-(纪念第一次认真写博)

转载于:https://www.cnblogs.com/zhuier-xquan/p/10624054.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值