• 前往央都之行-gdufe1529


    前往央都之行

    Time Limit: 2000/1000ms (Java/Others)

    Problem Description:

    刀光哥桐人和尤吉欧两人为了拯救爱丽丝,同时从卢利特村出发要尽快同时赶到央都。出发时卢利特村有一位公理教会的整合骑士,可是他的龙只能带一人。已知刀光哥和尤吉欧两人的步行速度一样,且小于龙的速度。问:怎样利用整合骑士的龙能使两人尽快同时到达央都。

    Input:

    输入数据有多组,每组有三个数据分别表示卢利特村和央都两地的距离s,桐人和尤吉欧的步行速度a,龙的速度b。

    Output:

    两人同时到达央都地需要的最短时间,保留6位小数。

    Sample Input:

    120 5 25

    Sample Output:

    9.600000

    思路分析:最后同时到达,一个人走着到,一个人坐着龙飞到。
    已知路程s,人的速度a,龙的速度b。人甲乙和龙,可分为三个阶段:
    第一阶段t1:甲坐着龙飞,乙走路。
    第二阶段t2:龙放下甲返回接乙,此间甲走路,乙也走路。
    第三阶段t3:龙接到乙,乙坐龙飞,甲走路。
    甲的路程:t1*b + t2*a + t3*a = s;
    乙的路程: t1*a + t2*a + t3*b = s;
    可得: t1*b + t3*a = t1*a + t3*b; → t1*(b-a) = t3*(b-a); → t1 = t3;
    结论:甲乙走路时间一样: t1 + t2 ,坐龙飞的时间一样 t1
    明显,只有一条式子,只能有一个变量,要把t2解决掉。设走路的路程为x,则坐龙飞的时间为s-x。
    甲走路的时间 = 乙坐龙飞的时间 + 龙返回接乙的时间
    龙返回接乙的路程如何表示?
    龙放下甲后,甲一直走到终点,抛下甲的地点为s-x,龙接到乙之前,乙都是在走路,接到乙的地点为x,行程为(s-2x)
    x/a = (s-x)/b + (s-2x)/b;
    x = (2*s*a) / (b+3a);
    全程时间 = 走路时间 + 坐龙飞时间
    t = x/a + (s-x)/b;
    AC代码:
    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    #include<set>
    #include<string.h>
    using namespace std;
    
    
    
    int main()
    {
        double x,t1,t2,t,s,a,b;
        while( scanf("%lf%lf%lf",&s,&a,&b)!=-1) ///不要用整型输入,有误差导致wa
        {
            x = (2*s*a) / (b+3*a);
            t1 = x/a;
            t2 = (s-x)/b;
            t = t1 + t2;
            printf("%.6lf
    ",t);
        }
        return 0;
    }
    
    
    




  • 相关阅读:
    20155305乔磊2016-2017-2《Java程序设计》第三周学习总结
    20155305乔磊2016-2017-2《Java程序设计》第二周学习总结
    20155305乔磊2016-2017-2《Java程序设计》第一周学习总结
    20155305乔磊第三次随笔
    乔磊20155305第二次随笔
    乔磊的第一次随笔
    20155302 2016-2017-2 《Java程序设计》第九周学习总结
    20155302 2016-2017-2 《Java程序设计》第八周学习总结
    20155302 2016-2017-2 《Java程序设计》第七周学习总结
    20155302 2016-2017-2 《Java程序设计》第六周学习总结
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/10166442.html
Copyright © 2020-2023  润新知