P1095 守望者的逃離

2021-10-08 14:56:47 字數 1946 閱讀 1069

p1095

題目描述

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

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

輸入格式

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

輸出格式

共兩行。

第11行為字串「yesyes」或「nono」(區分大小寫),即守望者是否能逃離荒島。

第22行包含乙個整數。第一行為「yesyes」(區分大小寫)時表示守望者逃離荒島的最短時間;第一行為「nono」(區分大小寫)時表示守望者能走的最遠距離。

輸入輸出樣例

輸入 #1 複製

39 200 4

輸出 #1 複製

no197

輸入 #2 複製

36 255 10

輸出 #2 複製

yes6

說明/提示

30%的資料滿足:1 \le t \le 10, 1 \le s \le 1001≤t≤10,1≤s≤100

50%的資料滿足:1 \le t < \le 1000, 1 \le s \le 100001≤t<≤1000,1≤s≤10000

100%的資料滿足:1 \le t \le 300000,0 \le m \le 1000, 1 \le s \le 10^81≤t≤300000,0≤m≤1000,1≤s≤108.

#include

using

namespace std;

int n,t,s;

map<

int,

int>dp[

350000];

//前i秒,有j能量,最大距離

intmain()

else

for(

int i=

1;i<=n;i++

)dp[1]

[i]=17;

if(s<=

60&&n>=10)

//特判

for(

int i=

2;i<=t;i++)}

}int ans=0;

for(

int j=

0;j<=n;j++

)//can not arrive

ans=

max(dp[t]

[j],ans)

; cout<<

"no"

0;

code 100%

#include

#include

using

namespace std;

int dp[

300001];

intmain()

for(

int i=

1;i<=t;i++

)//如果超過了距離s,就成功了,輸出yes

}printf

("no\n%d"

,dp[t]);

//沒成功,輸出no

return0;

}

P1095 守望者的逃離

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

P1095 守望者的逃離

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

P1095 守望者的逃離

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