1004. 西西弗斯式的命運(yùn)
Description
古希臘有個(gè)關(guān)于西西弗斯的神話:
西西弗斯被眾神判決推運(yùn)一塊石頭至山頂滨巴。由于巨石本身的重量,它被推到山頂卻又總要滾下山腳俺叭。于是西西弗斯又得把石塊推上山去。如此反復(fù)泰偿,永無(wú)止境熄守,沒(méi)有盡頭。眾神認(rèn)為,讓西西弗斯服這永恒的勞役是最嚴(yán)酷的懲罰裕照。
二哥被押入地獄攒发。他被眾神判決扛著一塊巨磚在山路上走,再原路返回晋南,如此反復(fù)惠猿,沒(méi)有盡頭。
眾神規(guī)定二哥獨(dú)自走山路的時(shí)間不得超過(guò)M秒( 1≤M≤10,000,000 )负间。整條山路被劃分成T個(gè)長(zhǎng)度相同的小段( 1≤T≤100,000 )偶妖,并且,眾神用Si表示第i個(gè)小段的路況政溃。Si為u,f,d這3個(gè)字母之一趾访,它們分別表示第i個(gè)小段是上坡、平地董虱、下坡扼鞋。
二哥要花U秒( 1≤U≤100 )才能走完一段上坡路,走完一段平地的耗時(shí)是F秒( 1≤F≤100 )愤诱,走完一段下坡路要花D秒( 1≤D≤100 )云头。注意,沿山路原路返回的時(shí)候淫半,原本是上坡的路段變成了下坡路溃槐,原本是下坡的路段變成了上坡路。
二哥對(duì)生活充滿激情撮慨,但他遭受著難以用言語(yǔ)盡述的非人折磨:痛苦扭曲的臉竿痰,被巨磚死死壓住的抖動(dòng)的肩膀,沾滿泥土的雙腳砌溺,嘔心瀝血影涉,不停的工作。這是典型的西西弗斯式的命運(yùn)规伐。貝多芬蟹倾,歌德,叔本華猖闪,你才鲜棠,還有高斯,愛(ài)因斯坦的命運(yùn)培慌,都是典型的西西弗斯式的命運(yùn)豁陆,無(wú)一例外。
眾神想讓二哥能在按時(shí)返回的前提下吵护,走最遠(yuǎn)的路盒音。所以眾神向知道他最多能在這條山路上走多遠(yuǎn)表鳍。
Input Format
第1行:5個(gè)空格隔開(kāi)的整數(shù):M,T,U,F,D。
第2..T+1行:第i+1行有一個(gè)字母Si祥诽,描述第i段山路的路況譬圣。
Output Format
一行,有一個(gè)整數(shù)為二哥在按時(shí)回到起點(diǎn)前提下雄坪,最多能跑到多遠(yuǎn)厘熟。
Sample Input
13 5 3 2 1
u
f
u
d
f
Sample Output
3
樣例解釋
眾神規(guī)定二哥的最大耗時(shí)為13秒,他跑步的山路一共被劃分成5段维哈。二哥走完一段上坡的耗時(shí)為3秒绳姨,平地為2秒,下坡為1秒笨农。
二哥走完山路的前3段就缆,然后返回,總耗時(shí)為3+2+3+1+2+1=12秒谒亦,如果他跑得更遠(yuǎn)竭宰,就無(wú)法按時(shí)回到起點(diǎn)。
分析
這道題其實(shí)很簡(jiǎn)單份招,就是計(jì)算從起點(diǎn)開(kāi)始在規(guī)定時(shí)間內(nèi)走最長(zhǎng)距離切揭。
然后最佳思路是,每輸入一個(gè)就進(jìn)行2锁摔,u或d則U+D廓旬,f則F2。
但我開(kāi)始用C實(shí)現(xiàn)谐腰,getchar和scanf都會(huì)涉及字符輸入會(huì)有換行問(wèn)題孕豹,而且不知道內(nèi)部輸入是否有換行,最后使用C++實(shí)現(xiàn):
#include <iostream>
using namespace std;
int main()
{
int M,T,U,F,D;
int length=0;
char tmp;
int i;
int num=0;
int flag=0;
cin>>M>>T>>U>>F>>D;
for(i=0;i<T;i++) {
cin>>tmp;
if(!flag) {
if(tmp=='f') length+=F*2;
else length+=U+D;
if(M>=length) num++;
else flag=1;
}
}
cout<<num;
return 0;
}