守望者的逃離

2021-08-06 07:32:13 字數 2077 閱讀 1386

前言

「送你破鍵盤,廉價發打字聲依稀。送你破電腦,便宜的讓你去做題。一本藍皮書一直沒落任能回味,那套高質量題 。」歡迎來到嘟嘟課堂。今天,嘟嘟老師要講一道看起來很難,實際卻很簡單的題——守望者的逃離。

題目描述

惡魔獵手尤迫安野心勃勃.他背叛了暗夜精靈,率深藏在海底的那加企圖叛變:守望者在與尤迪安的交鋒中遭遇了圍殺.被困在乙個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去,到那時,島上的所有人都會遇難:守望者的跑步速度,為17m/s, 以這樣的速度是無法逃離荒島的。慶幸的是守望者擁有閃爍法術,可在1s內移動60m,不過每次使用閃爍法術都會消耗魔法值10點。守望者的魔法值恢復的速度為4點/s,只有處在原地休息狀態時才能恢復。

現在已知守望者的魔法初值m,他所在的初始位置與島的出口之間的距離s,島沉沒的時間t。你的任務是寫乙個程式幫助守望者計算如何在最短的時間內逃離荒島,若不能逃出,則輸出守望者在剩下的時間內能走的最遠距離。注意:守望者跑步、閃爍或休息活動均以秒(s)為單位。且每次活動的持續時間為整數秒。距離的單位為公尺(m)。

輸入

僅一行,包括空格隔開的三個非負整數m,s,t。

輸出

包含兩行:

第1行為字串」yes」或」no」 (區分大小寫),即守望者是否能逃離荒島。

第2行包含乙個整數,第一行為」yes」 (區分大小寫)時表示守望著逃離荒島的最短時間

第一行為」no」 (區分大小寫) 時表示守望者能走的最遠距離。

樣例輸入1

39 200 4

樣例輸出1

no 197

樣例輸入2

36 255 10

樣例輸出2

yes

6資料範圍限制

30%的資料滿足: 1 <= t<= 10, 1 <=s<= 100

50%的資料滿足: 1 <= t <= 1000, 1 <= s <= 10000

100%的資料滿足: 1 <= t <= 300000, 0 <= m<=1000 1 <=s <= 10^8

思路

此題看上去很難但實際很水。瞬移肯定比跑步快,(就像閃現一定比疾跑快)直接暴力列舉就行了。列舉用疾跑和用閃現的方案。

**

var

a:array[0..300001] of longint;

m,s,t,i,max:longint;

begin

assign(input,'escape.in');reset(input);

assign(output,'escape.out');rewrite(output);

readln(m,s,t);

for i:=t-1

downto0do

begin

if (m>=10) then

begin

a[i]:=a[i+1]+60;

m:=m-10;

endelse

begin

a[i]:=a[i+1];

m:=m+4;

end;

end;

for i:=t-1

downto0do

begin

if (a[i]1]+17) then a[i]:=a[i+1]+17;

if (a[i]>=s) then

begin

writeln('yes');

writeln(t-i);

halt;

end;

if (a[i]>max) then max:=a[i];

end;

writeln('no');

writeln(max);

close(input);

close(output);

end.

守望者的逃離

功能 判斷守望者是否能夠逃出荒島 輸入引數 unsigned int uimagic 無符號整型,守望者的初始魔法值 unsigned int uidistance 無符號整型,守望者所在的初始位置與島出口之間的距離。unsigned int uisec 無符號整型,島沉沒需要的時間,單位為秒 輸出...

守望者的逃離

惡魔獵手尤迪安野心勃勃,他背叛了暗夜精靈,率領深藏在海底的娜迦族企圖叛變。守望者在與尤迪安的交鋒中遭遇了圍殺,被困在乙個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去。到那時,島上的所有人都會遇難。守望者的跑步速度為17m s,以這樣的速度是無法逃離荒島的。慶幸的是守望...

守望者的逃離(貪心)

題目描述 惡魔獵手尤迪安野心勃勃,他背叛了暗夜精靈,率領深藏在海底的娜迦族企圖叛變。守望者在與尤迪安的交鋒中遭遇了圍殺,被困在乙個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去。到那時,島上的所有人都會遇難。守望者的跑步速度為17m s,以這樣的速度是無法逃離荒島的。慶...