jzoj4249 遊戲 貪心

2021-09-10 09:21:32 字數 1064 閱讀 1194

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更優。

但是若我們先移動到i

ii之後在移動j

jj權值為i∗a

i+(j

−i)∗

aj

i*a_i+(j-i)*a_j

i∗ai​+

(j−i

)∗aj

​而之間移動到j

jj權值為j∗a

jj*a_j

j∗aj

​。兩個抵消掉(j−

i)∗a

j(j-i)*a_j

(j−i)∗

aj​的部分就是i∗a

ii*a_i

i∗ai​和i∗a

ji*a_j

i∗aj

​。因為a

i>aj

a_i>a_j

ai​>aj

​所以先移動到i

ii更優。

此情況不存在

證畢

所以我們預處理字尾max

maxma

x就好了

#include

#include

using

namespace std;

const

int n=

100010

;int n,a[n]

,maxs[n]

,ans,last;

intmain()

}printf

("%d"

,ans)

;}

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...

動態規劃 貪心 JZOJ 4249 遊戲

乙個人從起點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 分,正解...