首页 > 其他 > 详细

【洛谷p1258】小车问题

时间:2019-03-30 19:27:50      阅读:200      评论:0      收藏:0      [点我收藏+]

(……吓人,心有余悸)

小车问题【传送门】

洛谷算法标签::

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


 

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

  • 思路:

             先把其中一个人(甲)用车送到某个地方(暂且称那时的时间为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-(纪念第一次认真写博)

【洛谷p1258】小车问题

原文:https://www.cnblogs.com/zhuier-xquan/p/10624054.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!