洛谷P2473 獎勵關 期望dp

2022-09-01 09:30:16 字數 1216 閱讀 4606

csdn的介面真的是越來越醜了qwq

qwq希望可以保留原來的樣式吧,真的不是很喜歡現在的介面了。

搞不好到時候又要去註冊或者自己搭建部落格了。有nn

個物品,每乙個時刻隨機生成乙個物品,選擇該物品能獲得aia

i​的價值,但是選擇一些物品可能需要先選擇其他物品。求最優策略下期望價值。

↑↑哇這個人的期望dpd

p是真的菜

最直接的想法是設f[i

][s]

f[i]

[s]表示到第i

i個時刻,選擇物品的集合為s

s的期望價值。

但是我們發現可能第i

i個時刻無法到達集合為s

s的情況。這樣我們的階段設的就有問題了。

所以為了避免這種情況,我們需要逆推來解決這個問題。也就是說,我們從結束時的情況反推會開始時的情況。

那麼列舉第i

i個時刻出現的物品j

j,如果s

s中包含所有需要在選擇物品j

j必須選擇的物品,那麼就是可以選擇物品j

j的,但是同時也可以不選擇物品j

j。由於題目求最優情況下的期望,所以就在這兩個中間取乙個max

max即可。

如果ss

不包含所有的必選物品,那麼這個位置就不能取j

j了,直接用下一位取j

j的答案賦值即可。

注意每一次是隨機出現的,所以每乙個物品的價值都要除以nn。

時間複雜度o(n

m2m)

o(nm

2m)。

#include

#include

using

namespace std;

const

int n=

110,maxn=

1<<16;

int n,m,maxn,x,a[n]

,p[n]

;double f[n]

[maxn]

;int

main()

} maxn=

1<

for(

int i=m;i>=

1;i--

)for

(int s=

0;s)printf

("%0.6lf"

,f[1][

0]);

return0;

}

Luogu P2473獎勵關(期望DP)

題目鏈結 逆推期望dp。設f i j 為1 i 1中吃到的寶物集合為j,在i k輪能得到的最大期望分數。如果不吃顯然f i j f i 1 j n 如果吃就是f i j max f i 1 j n,f i 1 j 1 然後照著這樣的方程式搞一搞,最後答案就是f 1 0 話說我一開始的狀態設計就是題解...

P2473 SCOI2008 獎勵關 題解

首先看這個範圍又看到這種題目,就知道是狀壓 dp 跑不了了。乙個直接的思路是設 f 表示當前到第 i 輪,寶物拿取狀態為 s 時的得分,但是我們發現這玩意直接推的話會出現一些奇奇怪怪的狀態,主要是這個系統有時扔出來的寶物不能讓你到達 s 或者是你推著推著 s 裡面 1 的個數就大於 i 了。所以我們...

bzoj1076 獎勵關 期望dp

題目傳送門 題目大意 總共有k次彈出寶物的機會,寶物共有n種,彈出不同的寶物的概率相同的,是每個寶物都有價值,和選擇這個寶物的限制 必須具有特定的寶物 問最後的最優期望是多少。思路 正向推概率,反向推期望。一看資料範圍就知道肯定是狀壓。這裡推薦乙個大佬的部落格 考慮f i j j為二進位制數,表示在...