http://tyvj.cn/p/1003
模拟即可,上坡路段就加上下坡路段的时间,平路路段要*2,下坡路段就加上上坡路段的时间,时间不够了一定立即返回,否则会有问题
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main ()
{
int m,t,u,f,d;
scanf("%d%d%d%d%d%*c", &m, &t, &u, &f, &d);
int tot = 0;
int k = 0;
for (int i=1;i<=t;i++)
{
char ch = getchar();
switch(ch)
{
case 'u':
if (tot+u+d<=m)
{
tot+=u+d;k++;
} else {
printf("%d\n", k);
return 0;
}
break;
case 'f':
if (tot+f+f<=m)
{
tot+=f+f;k++;
} else {
printf("%d\n", k);
return 0;
}
break;
case 'd':
if (tot+d+u<=m)
{
tot+=d+u;k++;
} else {
printf("%d\n", k);
return 0;
}
break;
}
getchar();
}
return 0;
}