牛客网小白月赛6-A鲲

题目链接:https://www.nowcoder.com/acm/contest/136/A

题目大意:

圆环形周长L泳池,H与小鲲比赛,小鲲以速度a游一圈,H可以选择以速度b游一圈或者在他与小鲲的距离超过K后,立马掉头回去起点。求的是:小鲲最少比Ht提前多长时间完成比赛,也就是求:[t(H)-t(小鲲)]min。

这是我在牛客网的第一场比赛,前后紧张的3个小时,而我只做出来一道题。在这道题上用的时间最多,然而很惨~到最后也没有通过全部的测试用例。前前后后提交了12次,从测试用例通过24%——48%——80%——90%……o(╥﹏╥)o我考虑的不周到,导致一直在wa……

这个是AC代码:


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<sstream>
 
using namespace std;
const int maxn=100000+10;
char b[maxn];
int a[maxn];
typedef long long ll;
  
int main(){
  
    long double L,K,a,b;
    scanf("%Lf %Lf %Lf %Lf",&L,&K,&a,&b);
  
  
    long double t1=L/a;//小坤用时;
 
    long double t2=L/b;
     
    long double t3;
    if(a>b){
        t3=K/(a-b);
    }
 
    //printf("%Lf\n",t3);
 
    long double t4;
    //剩下的距离大于走过的距离,选择返回
    if(a<=b||K>=L||t3<(L-K)/2*a)t4=t2;
  
    else
 
    t4=min(t2,2*t3);
  
    //printf("%.2lf\n",t1);
  
   long double dt=t4-t1;
  
    printf("%.2Lf\n",dt);
  
    return 0;
}

题目已经说的很清,就是要求一个最小值。但是这个最小值又要结合互相监督距离K,来考虑(我就是因为没有想到这里一直在wa┭┮﹏┭┮)。

首先小鲲的所用的时间 t1 是恒定不变的。

设 H 不掉头所用 时间 t2。

设 H 与小鲲距离大于等于 K 时间 t3。

设 t4 是H最终所用时间。

以下三点是H不可能掉头的情况:这时 t4 = t2。

  1. 如果H速度 b 大于等于小鲲 a,H是不可能掉头的。
  2. 如果互相监督距离 K 大于等于 游泳池周长 L 。
  3. 在H掉头回到起点的时候,小鲲也与起点接近。这时 他们的距离可能会小于 K。于是有下面方程:

即H 重新回到 起点所用的时间 2*t3 小于了 小鲲 所用(L -K)/a。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值