[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; }

浙公网安备 33010602011771号