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為二進位制數,表示在...