乙個人從起點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...