题目描述
有一对老夫妇,现在要赶往城里去卖今天刚收成的大白菜。最开始两位老夫妇骑着驴准备赶往城里,途中碰到了路人甲,甲说“这驴又是载物又是载人的,这是虐待啊”,老夫妇一听也有点不好意思随即下来一人。在路途中又碰到了路人乙,乙说“骑在驴上的人好自私啊,居然自己享受”,另一人一想也下了驴。路上又碰到了路人丙,丙说“这两人这么没用,有驴都不骑”,老夫妇非常的无奈又骑上了驴子。经过一番周折终于到了城里。
我们要求的是从出发到进城的距离
我们用一段字符串来模拟这一路的情况,字符串由(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;
}
代码供参考,希望对大家有帮助!