bzoj1076 獎勵關 狀壓dp 概率dp

2022-03-27 03:10:27 字數 822 閱讀 8729

題意:給出n種物品,每種物品有牽制條件和價值,有k次選擇機會,每次每個物品等概率出現,問平均情況下最大收益。(n<=15)

首先看到這個n的範圍和限制條件就應該想到是狀壓。

定義陣列f[i][j]為當前處在第i次拋物品時間,狀態為j。

但是如果我們僅僅這樣定義並正向轉移就會遇到乙個問題:我們是有可能從無效狀態推出有效狀態,進而得出錯誤的結論的。例如,1的限制條件為2、3、4,那麼我們就有可能從f[3][0111(2)]推出f[4][1111(2)],進而得出錯誤的結論。

怎麼辦呢,倒推。可以確定的是,結尾狀態一定是合法的。

1

//以後大概概率都倒推好了……

2 #include3 #include4 #include5 #include6

using

namespace

std;

7const

int maxk=105,maxn=20,maxa=(1

<<15);8

intn,ka,a[maxn],qianti[maxn];

9double

f[maxk][maxa];

10int

haha()

1119

int att=(1

<

20for(int i=ka;i;i--)

21for(int j=0;j)

2229 printf("

%0.6lf\n

",f[1][0

]);30}31

int sb=haha();

32int main()

bzoj1076

BZOJ1076 獎勵關(狀壓期望dp)

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

BZOJ 1076 獎勵關 狀壓期望DP

當前得分期望 上一輪得分期望 這一輪得分 m dp i,j 第i輪拿的物品方案為j的最優得分期望 如果我們正著去做,會出現從不合法狀態 比如前i個根本無法達到j這種方案 所以從後向前推 如果當前方案j裡具備了取k這個物品的條件 那麼dp i,j max 否則dp i,j dp i 1,j inclu...

bzoj1076 獎勵關 期望dp

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