題目鏈結
題目大意:給定$n$個寶物,每次隨機丟擲乙個寶物,獎勵分數為$p_i$。但如果選這個寶物必須選過它的前置寶物集合。共進行$k$輪問最優策略下的期望。
$n\leq 15,-10^6\leq p_i\leq 10^6$
看到資料範圍,狀壓很容易想到。
設$f[i][j]$表示到了第$i$輪,寶物取捨狀態為$j$的最大期望得分。
但這樣表示有乙個問題:可能在第$i$輪沒法到達狀態$j$。我們無法預知未來。
改一下定義:$f[i][j]$表示第$1$輪到第$i-1$輪寶物取捨狀態為$j$,第$i$輪到第$k$輪的最大期望得分。有如下狀態轉移方程:
如果前置寶物都已經取過,那麼有$f[i][j]+=\max(f[i+1][j],f[i+1][j|(1<<(k-1))]+p[k])$
如果沒有,則直接繼承先前狀態:$f[i][j]+=f[i+1][j]$。
最後再除$n$即為期望值。
**:
#includeusingnamespace
std;
int n,k,p[16],s[16
],x;
double f[105][1
<<16
];inline
intread()
while(isdigit(ch))
return x*f;
}int
main()
for (int i=k;i>=1;i--)
for (int j=0;j<(1
<)
printf(
"%lf
",f[1][0
]);
return0;
}
SCOI2008 獎勵關 狀壓 期望dp
傳送門 題意 有n種卡 n 15 k輪遊戲,每輪遊戲可以抽一張卡 每一輪抽出每種卡的概率都是1 n 卡的價值為ai ai可以為負數 並且某些卡需要另一些卡作為引導即只有在得到某些卡的時候才能獲得這些卡,每輪遊戲抽到的卡可以選擇獲得 前提是前驅卡已經獲得 或者不獲得,求選擇最優策略的情況下的總價值的期...
P2473 SCOI2008 獎勵關 題解
首先看這個範圍又看到這種題目,就知道是狀壓 dp 跑不了了。乙個直接的思路是設 f 表示當前到第 i 輪,寶物拿取狀態為 s 時的得分,但是我們發現這玩意直接推的話會出現一些奇奇怪怪的狀態,主要是這個系統有時扔出來的寶物不能讓你到達 s 或者是你推著推著 s 裡面 1 的個數就大於 i 了。所以我們...
BZOJ1076 獎勵關(狀壓期望dp)
好像noip一眼看去,全是dp。題面題意 有k個回合,n個物品,每回合隨機掉乙個物品i,有p i 的價值。可以選擇撿或不撿。對於每件物品,若想撿它,都要撿完它的先決物品,問最大期望價值。n 15,k 100。大概就是個狀壓dp,用f s i 表示i回合選了集合s的物品,所得到的最大期望。若每回合都必...