洛谷 P1095 守望者的逃離題解

2021-10-25 05:39:48 字數 1094 閱讀 3170

解題思路:首先dp的套路就是先找狀態,這題也找不出其他的狀態了,只有時間乙個,所以用f[i]表示時刻i能走多遠。仔細一想實際上決策只有跑、閃現、停三種決策

然而閃現的耗藍要和跑步一同計算十分麻煩。於是把它們分開算:先算閃現的,有以下框架

for i in range(1,t)

如果藍量夠

閃現,耗藍

如果不夠

停下,回藍

接下來算走路,其實走路的只要維護之前算出的即可

因為之前已經算了只用閃現走多遠,那麼只要判斷如果這一秒不閃或者不停(因為跑步不耗藍)是否比之前更優即可

框架 for i in range(1,t)

如果這一秒走路比只閃現更優

那就走路,用走路替代閃現或停

同時,如果f[i]已經大於等於s,即逃出去了,那麼輸出並退出程式

**:

#include

using

namespace std;

const

int maxn =

500000

;int m, s, t,dp[maxn]

,flag=0;

intmain()

else

}for

(int i =

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

cout <<

"no"

<< endl;

cout << dp[t]

<< endl;

return0;

}

這裡解釋一下如果這一秒不閃或者不停(因為跑步不耗藍)是否比之前更優即可的含義:當輸入第二個案例後

36

25510

60120

180180

240240

240240

300300

60120

180197

240257

274291

308325

no325

我們可以看到第9s的時候有乙個比較->用閃現和跑步->如果閃現更優,那麼就直接取閃現否則取跑步

洛谷 P1095 守望者的逃離

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

洛谷P1095 守望者的逃離

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

遞推 洛谷 P1095 守望者的逃離

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