zoukankan      html  css  js  c++  java
  • 【洛谷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-(纪念第一次认真写博)

  • 相关阅读:
    Rex 密钥认证
    MQTT协议之moquette 安装使用
    开源MQTT中间件:moquette
    Hazelcast入门简介
    Maven和Gradle对比
    rex 上传文件并远程执行
    myeclipse配置gradle插件
    ansible 新手上路
    CentOS release 6.5 (Final) 安装ansible
    spring boot 使用profile来分区配置
  • 原文地址:https://www.cnblogs.com/zhuier-xquan/p/10624054.html
Copyright © 2011-2022 走看看