洛谷 P1725 琪露諾

2021-10-08 06:45:18 字數 1498 閱讀 7593

題目鏈結

在幻想鄉,琪露諾是以笨蛋聞名的冰之妖精。

某一天,琪露諾又在玩速凍青蛙,就是用冰把青蛙瞬間凍起來。但是這只青蛙比以往的要聰明許多,在琪露諾來之前就已經跑到了河的對岸。於是琪露諾決定到河岸去追青蛙。

小河可以看作一列格仔依次編號為0到n,琪露諾只能從編號小的格仔移動到編號大的格仔。而且琪露諾按照一種特殊的方式進行移動,當她在格仔i時,她只移動到區間[i+l,i+r]中的任意一格。你問為什麼她這麼移動,這還不簡單,因為她是笨蛋啊。

每乙個格仔都有乙個冰凍指數a[i],編號為0的格仔冰凍指數為0。當琪露諾停留在那一格時就可以得到那一格的冰凍指數a[i]。琪露諾希望能夠在到達對岸時,獲取最大的冰凍指數,這樣她才能狠狠地教訓那只青蛙。

但是由於她實在是太笨了,所以她決定拜託你幫它決定怎樣前進。

開始時,琪露諾在編號0的格仔上,只要她下一步的位置編號大於n就算到達對岸。

第1行:3個正整數n, l, r

第2行:n+1個整數,第i個數表示編號為i-1的格仔的冰凍指數a[i-1]

乙個整數,表示最大冰凍指數。保證不超過 231−

12^-1

231−

1

5 2 3

0 12 3 11 7 -2

11
單調佇列+dp~

後來發現資料增強了,我發現自己寫的有點小問題,就改了一下?

首先,我們要明白一點,它跳是跳到 [i+

l,i+

r]

[i+l,i+r]

[i+l,i

+r] 上的,並不是跳到 [i+

1,i+

r]

[i+1,i+r]

[i+1,i

+r] 這種正常的跳法,那麼勢必就會有一些點永遠無法到達,那麼此時如果我們把 dpdp

dp陣列初始化為 0

00 顯然是不對的,應該初始化成 int_min~

接著就是正常的單調佇列操作和動態規劃了,因為上述條件,所以我們遍歷的時候可以用兩個指標,乙個從 1

11 開始,乙個從 l

ll 開始,ac**如下:

#include

"bits/stdc++.h"

using

namespace std;

typedef

long

long ll;

const

int n =

2e5+5;

deque<

int> q;

int n, l, r, ans =

-1e9

, a[n]

, dp[n]

;int

main()

for(

int i = n - r +

1; i <= n; i++

) ans =

max(ans, dp[i]);

cout << ans;

return0;

}

洛谷P1725 琪露諾

在幻想鄉,琪露諾是以笨蛋聞名的冰之妖精。某一天,琪露諾又在玩速凍青蛙,就是用冰把青蛙瞬間凍起來。但是這只青蛙比以往的要聰明許多,在琪露諾來之前就已經跑到了河的對岸。於是琪露諾決定到河岸去追青蛙。小河可以看作一列格仔依次編號為0到n,琪露諾只能從編號小的格仔移動到編號大的格仔。而且琪露諾按照一種特殊的...

洛谷 P1725 琪露諾

在幻想鄉,琪露諾是以笨蛋聞名的冰之妖精。某一天,琪露諾又在玩速凍青蛙,就是用冰把青蛙瞬間凍起來。但是這只青蛙比以往的要聰明許多,在琪露諾來之前就已經跑到了河的對岸。於是琪露諾決定到河岸去追青蛙。小河可以看作一列格仔依次編號為0到n,琪露諾只能從編號小的格仔移動到編號大的格仔。而且琪露諾按照一種特殊的...

洛谷P1725 琪露諾

本人第乙個單調佇列優化 dp 不鼓勵鼓勵?琪露諾這個題,dp 還是挺好想的對不,但是暴力 dp 的話會 tle 所以我們考慮用單調佇列優化。原題中說她只移動到區間 i l,i r 中的任意一格,所以我們單調佇列在轉移的時候 push 的應該是 dp i l 而不是 dp i 對於每一段區間,我們用起...