zoukankan      html  css  js  c++  java
  • P1258 小车问题

    题目描述

    甲、乙两人同时从A地出发要尽快同时赶到B地。出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。

    输入输出格式

    输入格式:

    仅一行,三个数据分别表示AB两地的距离s,人的步行速度a,车的速度b。

    输出格式:

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

    输入输出样例

    输入样例#1:
    120 5 25
    
    输出样例#1:
    9.600000
    ----------------------------------------------------------------------------------------------------
    思路:二分答案
    首先要找到需要二分的变量:
      小车先把甲运到某一个位置C(0<C<s),然后小车返回去找乙,期间甲乙都继续向前走,当小车接到乙后,以b的速度赶往B点。甲全程用的时间为t1,乙为t2。
    那么C就是我们需要二分的变量。
    因为t1与t2都往相等无限逼近,所以二分的临界条件便是abs(t1-t2)小于某个精度,这里设为0.0000001。
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    double s,a,b,l,r;
    long long read()
    {
        long long x=0,f=1;
        char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f; 
    }
    inline double work1(double mid)
    {
        double ans=0;
        ans+=mid/b;
        ans+=(s-mid)/a;
        return ans;
    }
    inline double work2(double mid)
    {
        double ans=0;
        ans+=mid/b;
        ans+=(mid-(mid/b)*a)/(a+b);
        ans+=(s-((mid-(mid/b)*a)/(a+b)*a+((mid/b)*a)))/b;
        return ans;
    }
    inline bool check(double x,double y)
    {
        return x>y;
    }
    int main()
    {
        s=read();a=read();b=read();
        l=1;r=s;
        while(l<=r)
        {
            double t1=0,t2=0;
            double mid=(l+r)/2;
            t1=work1(mid);t2=work2(mid);
            if(check(t1,t2)) l=mid;
            else r=mid;
            if(abs(t1-t2)<0.0000001)
            {
                printf("%.6f",t1);
                return 0;
            }
        }
    }

    复杂度:(logn*log1000000)

  • 相关阅读:
    GZS与小公园(DFS)
    II play with GG(思维规律)
    bearBaby loves sleeping(BFS)
    湖南大学新生赛C,G,J题解
    bootstrap 标签页的使用(tab)
    js 循环生成元素,并为元素添加click事件,结果只执行最后一个点击事件
    使用原生js实现一个列表数据展示页面不同的项目状态使整行显示不同颜色。
    【Vue】详解Vue组件系统 目录
    基于TCP与UDP协议的socket通信
    ElementUI三级菜单checkBox全选实现
  • 原文地址:https://www.cnblogs.com/-hhs/p/10284500.html
Copyright © 2011-2022 走看看