C++打卡1-夫妇和驴

题目描述

有一对老夫妇,现在要赶往城里去卖今天刚收成的大白菜。最开始两位老夫妇骑着驴准备赶往城里,途中碰到了路人甲,甲说“这驴又是载物又是载人的,这是虐待啊”,老夫妇一听也有点不好意思随即下来一人。在路途中又碰到了路人乙,乙说“骑在驴上的人好自私啊,居然自己享受”,另一人一想也下了驴。路上又碰到了路人丙,丙说“这两人这么没用,有驴都不骑”,老夫妇非常的无奈又骑上了驴子。经过一番周折终于到了城里。

我们要求的是从出发到进城的距离

我们用一段字符串来模拟这一路的情况,字符串由(0,1)2个数字构成,1表示碰到人,碰到的人一定不满足老夫妇当前的情况。

注:老夫妇每人重60公斤,驴每多10公斤都会降低 1 m/s 的速度(过重的话速度至少为 1 m/s ),驴不载重速度为 20 m/s ,老人步行速度为 2 m/s , 上下驴不消耗时间。

输入输出格式

输入格式

第一行:一个整数n表示白菜的重量;

第二行:输入由0,1组成的字符串,表示的含义是每过1分钟路上的情况;

输出格式

输出到城市的时间

样例输入1:

40

0010010010

样例输出1:

1680

样例1说明

  • 最开始两人骑驴加上白菜一共160公斤,所以驴的速度为 4 m/s ,可以骑2分钟 ,当前距离为 2 * 60 * 4 = 480 ;
  • 第3分钟碰到1下来一人,这个时候速度由人来决定为 2 m/s ,可以走3分钟 ,当前距离为 480 + 3 * 60 * 2 = 840;
  • 第6分钟碰到1下来一人,这个时候速度由人来决定为 2 m/s ,可以走3分钟 ,当前距离为 840 + 3 * 60 * 2 = 1200;
  • 第9分钟碰到1,两人骑驴,这个时候速度为 4 m/s , 可以骑2分钟,当前距离为 1200 + 2 * 60 * 4 =1680;

数据规模与约定

  • 测试点:20个测试点,每个测试点得5分。
  • 测试限制:每个测试点时间限制1s,内存限制128M。

数据规模

  • 对于50%的数据,n ≤ 60 , 字符串长度 ≤ 1000 ;
  • 对于100%的数据, n ≤ 200 , 字符串长度 ≤ 10000;

直接上代码:

#include<bits/stdc++.h>

using namespace std;

int main(){

    double n;

    string s;

    cin>>n>>s;

    double v=max(1.0,20-(120+n)/10.0);

    double ans=0;

    int r=1;

    for(int i=0;i<s.length();i++){

        if(s[i]=='1'){

            if(r==1){

                r=2;

                v=max(1.0,20-(60+n)/10.0);

                v=min(2.0,v);

            }else if(r==2){

                r=3;

                v=max(1.0,20-n/10.0);

                v=min(2.0,v);

            }else{

                r=1;

                v=max(1.0,20-(120+n)/10.0);

            }

        }

        ans+=60*v;

    }cout<<ans;

    return 0;

}

代码供参考,希望对大家有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值