1 条题解

  • 0
    @ 2024-11-16 16:01:15

    车先送甲去 BB 地(乙朝 BB 地走),中途放下甲去,甲自己走

    向B地,车返回接乙,接完乙以后开往甲地,最后同时到达。

    可以列出方程: 解:设甲需要走 xx 的距离

    因为甲走路的时间=乙坐车的时间-车返回接乙的时间

    所以__x______s2x______x__|\_\_x\_\_|\_\_\_\_s-2x\_\_\_\_|\_\_x\_\_|x/a=(s2x+sx)/bx/a=(s-2x+s-x)/b;

    解得x=2as/3a+bx=2as/3a+b;

    那么时间t=x/a+(sx)/bt=x/a+(s-x)/b;

    可以直接根据式子求出结果:

    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    int main(){
        double a,b,s,x;
        cin>>s>>a>>b;
        x=(2*a*s)/(3*a+b);
        printf("%.6lf",x/a+(s-x)/b);
        return 0;
    }
    
    

    也可以二分找答案:

    
    #include<cstdio>
    
    #include<cmath>
    
    int main()
    
    {
    
        double s,s1,s2,v1,v2,t1,t2,p;
    
        double a,b;
    
        scanf("%lf%lf%lf",&s,&v1,&v2);
    
        s1=0;
    
        s2=s;
    
        do
    
        {
    
          p=(s1+s2)/2.0;
          
          a=p/v2;
      
          b=(p-a\*v1)/(v1+v2);
      
          t1=a+(s-p)/v1;
      
          t2=a+b+(s-(a+b)\*v1)/v2;
      
          if(t1<t2)
      
          s2=p;
      
          else
      
          s1=p;
    
        }
    
        while(fabs(t1-t2)>1e-8);
    
        printf("%.6lf",t1);
    
        return 0;
    
    }
    
    • 1

    信息

    ID
    134
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    32
    已通过
    16
    上传者