洛谷P1095 守望者的逃離 dp

2021-09-27 12:49:04 字數 1207 閱讀 3611

題目描述惡魔獵手尤迪安野心勃勃,他背叛了暗夜精靈,率領深藏在海底的娜迦族企圖叛變。守望者在與尤迪安的交鋒中遭遇了圍殺,被困在乙個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去。到那時,島上的所有人都會遇難。守望者的跑步速度為17m/s17m/s17m/s,以這樣的速度是無法逃離荒島的。慶幸的是守望者擁有閃爍法術,可在1s1s1s內移動60m60m60m,不過每次使用閃爍法術都會消耗魔法值101010點。守望者的魔法值恢復的速度為444點/s/s/s,只有處在原地休息狀態時才能恢復。現在已知守望者的魔法初值mmm,他所在的初始位置與島的出口之間的距離sss,島沉沒的時間ttt。你的任務是寫乙個程式幫助守望者計算如何在最短的時間內逃離荒島,若不能逃出,則輸出守望者在剩下的時間內能走的最遠距離。注意:守望者跑步、閃爍或休息活動均以秒(s)(s)(s)為單位,且每次活動的持續時間為整數秒。距離的單位為公尺(m)(m)(m)。輸入格式共一行,包括空格隔開的三個非負整數m,s,tm, s, tm,s,t。輸出格式共兩行。第111行為字串「yesyesyes」或「nonono」(區分大小寫),即守望者是否能逃離荒島。第222行包含乙個整數。第一行為「yesyesyes」(區分大小寫)時表示守望者逃離荒島的最短時間;第一行為「nonono」(區分大小寫)時表示守望者能走的最遠距離。輸入輸出樣例輸入 #1 複製 39 200 4

輸出 #1 複製 no

197輸入 #2 複製 36 255 10輸出 #2 複製 yes

6思路:一直在想怎麼貪心,其實用dpdp

dp非常簡單巧妙,把法術和移動分開計算就好了。

#include

using

namespace std;

typedef

long

long ll;

const

int maxn=

3e5+5;

int m,s,t;

int dp[maxn]

;int

main()

for(

int i=

1;i<=t;i++

) dp[i]

=max

(dp[i]

,dp[i-1]

+17);

if(dp[t]

printf

("no\n%d\n"

,dp[t]);

else}}

return0;

}

洛谷 P1095 守望者的逃離 dp

洛谷 p1095 守望者的逃離 dp 定義乙個dp陣列,dp i 表示i秒可以行進的最大距離。我們把閃爍和跑步分開進行處理。include include include include include include include include define max 300005 define...

洛谷 P1095 守望者的逃離

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

洛谷P1095 守望者的逃離

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