動態規劃 貪心 JZOJ 4249 遊戲

2021-09-10 09:39:48 字數 946 閱讀 2222

乙個人從起點0

00出發。

他現在如果在i

ii,那麼如果跳到j

jj,那麼獲得的價值為(j−

i)∗a

j(j-i)*a_j

(j−i)∗

aj​。

求剛好落到終點n

nn的最大可獲得的價值。

剛開始看到就想到o(n

2)的d

po(n^2)的dp

o(n2)的

dp,結果看了下資料發現只能拿60

6060

分,正解是斜率優化(當然我這麼菜怎麼可能打 )。

可以用貪心,我們每次從i

ii跳都直接跳到後面最大的a

ja_j

aj​。

證明:設後面最大的a

aa為a

ja_j

aj​,在起點和j

jj中有乙個iii。

那麼從起點x

xx出發到i

ii再到j

jj的價值就是ai∗

(i−x

)+aj

∗(j−

i)

a_i*(i-x)+a_j*(j-i)

ai​∗(i

−x)+

aj​∗

(j−i

);從起點x

xx直接到j

jj的價值就是aj∗

(j−x

)a_j*(j-x)

aj​∗(j

−x)顯然第二個優於第乙個。

#include

#include

int n, ans;

int a[

100001

], maxa[

100001];

intmain()

printf

("%d"

, ans)

;}

jzoj4249 遊戲 貪心

0 n 0 sim n 0 n的點,從i ii移動到j jj獲得aj j i a j j i aj j i 的價值。求最大價值。考慮貪心,每次移動到往後a ia i ai 最大的點。證明 反證明 我們假設有一種情況i ij a jaj 但是之間移動到j jj比先移動到i ii更優。但是若我們先移動到...

JZOJ4249 遊戲 貪心

乙個長度為n n的數列,每次可以選擇前面任意乙個位置i i跳到那裡,價值為ai i a i i 你所在的位置 求跳到n n的最大價值。證明 每次選擇max max 其中j j 表示你所在的位置。先設起點是0。那麼假設i i是最大價值的點,但是最優解應該先跳到j j,且下一次將跳到k k,且j i i...

JZOJ4249 遊戲 貪心

乙個長度為n n的數列,每次可以選擇前面任意乙個位置i i跳到那裡,價值為ai i a i i 你所在的位置 求跳到n n的最大價值。證明 每次選擇max max 其中j j 表示你所在的位置。先設起點是0。那麼假設i i是最大價值的點,但是最優解應該先跳到j j,且下一次將跳到k k,且j i i...