【NOIP2007】第三题·守望者的逃离
惡魔獵手尤迪安野心勃勃,他背叛了暗夜精靈,率領深藏在海底的娜迦族企圖叛變。守望者在與尤迪安的交鋒中遭遇了圍 殺,被困在一個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去。到那時,島上的所有人都會遇難。守望者的跑步速度為 17m/s,以這樣的速度是無法逃離荒島的。慶幸的是守望者擁有閃爍法術,可在1s內移動60m,不過每次使用閃爍法術都會消耗魔法值10點。守望者的魔 法值恢復的速度為4點/s,只有處在原地休息狀態時才能恢復。
現在已知守望者的魔法初值M,他所在的初始位置與島的出口之間的距離S,島沉沒的時間T。你的任務是寫一個程序幫助守望者計算如何在最短的時間內逃離荒島,若不能逃出,則輸出守望者在剩下的時間內能走的最遠距離。注意:守望者跑步、閃爍或休息活動均以秒(s)為單位,且每次活動的持續時間為整數秒。距離的單位為米(m)。
輸入描述 Input Description僅一行,包括空格隔開的三個非負整數M, S, T。
輸出描述 Output Description包含兩行:
第1行為字符串“Yes”或“No”(區分大小寫),即守望者是否能逃離荒島。
第2行包含一個整數。第一行為“Yes”(區分大小寫)時表示守望者逃離荒島的最短時間;
第一行為“No”(區分大小寫)時表示守望者能走的最遠距離。
樣例輸入 Sample Input39 200 4
樣例輸出 Sample OutputNo
197
代碼:
vara:array[0..300000] of longint;m,s,t,i:longint;function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end; beginreadln(m,s,t);a[0]:=0;for i:=1 to t doif m>=10 thenbegina[i]:=a[i-1]+60;m:=m-10;endelsebegina[i]:=a[i-1];m:=m+4;end;for i:=1 to t dobegina[i]:=max(a[i],a[i-1]+17);if a[i]>=s thenbeginwriteln('Yes');writeln(i);halt;end;end;writeln('No');writeln(a[t]);end.
轉載于:https://www.cnblogs.com/kairos2000/p/4783765.html
總結
以上是生活随笔為你收集整理的【NOIP2007】第三题·守望者的逃离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle中触发器的讲解
- 下一篇: hexo博客搭建时遇到的一些问题