bzoj1076(概率與期望dp入門)

2021-07-24 19:50:19 字數 650 閱讀 7463

題目大意:給定k次彈出寶物的機會,每次隨機彈出n種寶物的機會,如果吃過這種寶物的所有前提寶物就可以吃這種寶物,求最優策略的期望得分

看到資料範圍果斷狀壓dp- - 不看資料範圍害死人- -

至於吃還是不吃 這是個問題

對於這種最優策略的期望dp 我們一般都是從後往前推

列舉每次挑戰 列舉此時的狀態 列舉寶物是哪種

如果當前的寶物可以吃 就在吃與不吃的後繼狀態中選擇最大值加到當前狀態上

如果當前的寶物不能吃 只能選擇不吃的後繼狀態加到當前狀態上

最後輸出f[1][0]就是答案

#include#include#include#include#includeusing namespace std;

typedef double db;

int n,k;

double f[105][1<<17],sc[17];

int t[17];

int main()

int s=1<=1;i--)

{ for (j=0;j

總結:對於這種最優策略的期望dp 我們一般都是從後往前推,倒推會好做很多,因為最後的答案就是f[1][0]。順推不好判斷當前狀態是否有效。(倒推是有效從有效推來,無效隨

便,因為答案就是乙個有效狀態;而順推則可能從無效推到有效)

bzoj1076 獎勵關 期望dp

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

bzoj 1076(狀壓dp)(期望dp)

傳送門 題解 dp i j 表示第i輪狀態為j 狀態中為1的位表示當前物品還沒被取走 的最大期望得分。為了防止從無效狀態轉移至有效狀態,採用倒推法,從已知的有效狀態往回推,具體注釋在 中。p.s.不寫memset可以快接近一倍,但是為了思維嚴密性,還是寫乙個,反正都能過 注意 由於吃過的寶物可以再吃...

BZOJ1076 獎勵關(狀壓期望dp)

好像noip一眼看去,全是dp。題面題意 有k個回合,n個物品,每回合隨機掉乙個物品i,有p i 的價值。可以選擇撿或不撿。對於每件物品,若想撿它,都要撿完它的先決物品,問最大期望價值。n 15,k 100。大概就是個狀壓dp,用f s i 表示i回合選了集合s的物品,所得到的最大期望。若每回合都必...