[sjtu oj] 1004 西西弗斯式的命运

我这里采用了一种比较偷懒节约空间的方法

题目要求距离的最大值,那么只要边读边判断,走到第i段时还有多少时间

Case 1:若<0那么连这一段都不能走到,输出i-1,退出程序

Case 2: >0,继续执行

Case 3:当走到路的尽头(即循环结束),都没有走完,那么输出t

 

代码如下

#include<bits/stdc++.h>

using namespace std;

int m,t,a[3];

int main()
{
    cin>>m>>t>>a[0]>>a[1]>>a[2];
    char s;
    for(int i=1;i<=t;i++)
    {
        cin>>s;
        switch(s)
        {
            case 'u':m-=a[0]+a[2];break;
            case 'f':m-=a[1]*2;break;
            case 'd':m-=a[0]+a[2];break;
        }
        if(m<0) {cout<<i-1<<endl;return 0;}
    }
    cout<<t<<endl;
    return 0;
}

 

posted @ 2021-03-03 18:23  Adaxy  阅读(47)  评论(0)    收藏  举报