惡魔獵手尤迫安野心勃勃.他背叛了暗夜精靈,率深藏在海底的那加企圖叛變:守望者在與尤迪安的交鋒中遭遇了圍殺.被困在一個(gè)荒蕪的大島上。為了殺死守望者,尤迪安開始對(duì)這個(gè)荒島施咒,這座島很快就會(huì)沉下去,到那時(shí),刀上的所有人都會(huì)遇難:守望者的跑步速度,為17m/s, 以這樣的速度是無(wú)法逃離荒島的。慶幸的是守望者擁有閃爍法術(shù),可在1s內(nèi)移動(dòng)60m,不過每次使用閃爍法術(shù)都會(huì)消耗魔法值10點(diǎn)。守望者的魔法值恢復(fù)的速度為4點(diǎn)/s,只有處在原地休息狀態(tài)時(shí)才能恢復(fù)。
現(xiàn)在已知守望者的魔法初值M,他所在的初始位置與島的出口之間的距離S,島沉沒的時(shí)間T。你的任務(wù)是寫一個(gè)程序幫助守望者計(jì)算如何在最短的時(shí)間內(nèi)逃離荒島,若不能逃出,則輸出守望者在剩下的時(shí)間內(nèi)能走的最遠(yuǎn)距離。注意:守望者跑步、閃爍或休息活動(dòng)均以秒(s)為單位。且每次活動(dòng)的持續(xù)時(shí)間為整數(shù)秒。距離的單位為米(m)。
輸入文件escape.in僅一行,包括空格隔開的三個(gè)非負(fù)整數(shù)M,S,T。
輸出文件escape.out包含兩行:
第1行為字符串"Yes"或"No" (區(qū)分大小寫),即守望者是否能逃離荒島。
第2行包含一個(gè)整數(shù),第一行為"Yes" (區(qū)分大小寫)時(shí)表示守望著逃離荒島的最短時(shí)間
第一行為"No" (區(qū)分大小寫) 時(shí)表示守望者能走的最遠(yuǎn)距離。
39 200 4Sample Output
No197HINT
30%的數(shù)據(jù)滿足: 1 <= T<= 10, 1 <=S<= 100
50%的數(shù)據(jù)滿足: 1 <= T <= 1000, 1 <= S <= 10000
100%的數(shù)據(jù)滿足: 1 <= T <= 300000, 0 <= M<=1000 1 <=S <= 10^8
Source
NOIP2007
[Submit][Status] #include<iostream>int m,s,t,i,f[300001];using namespace std;int main(){ //freopen("/Users/qigelaodadehongxiaodi/Desktop/data1.txt", "r", stdin); //這個(gè)不理,是用來方便輸入輸出的東西,利用文本輸入流來讀取數(shù)據(jù) //提交代碼的時(shí)候記得注銷這條語(yǔ)句 cin>>m>>s>>t; for(i=1;i<=t;i++) { if(m>=10) { f[i]=f[i-1]+60; m-=10; } else { f[i]=f[i-1]; m+=4; } }//能閃爍就閃爍,不能閃爍就跑 for(i=1;i<=t;i++) { if(f[i]<f[i-1]+17)f[i]=f[i-1]+17; //這里是重點(diǎn)。 //如果這一秒選擇去休息獲取m+4,則你也可以選擇去跑步1s,然后判斷是否已經(jīng)跑出島嶼了 //如果沒跑出,則繼續(xù)下一秒 //為什么不需要減回去呢?因?yàn)楸緛韋[i]是保存狂閃爍的而已,下一秒不受上一輪跑與不跑的影響 if(f[i]>=s) { cout<<"Yes"<<endl; cout<<i<<endl; return 0; } } cout<<"No"<<endl; cout<<f[t]<<endl; return 0;}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注