dp期望之網格遊戲

2021-10-21 04:09:08 字數 1386 閱讀 6718

有乙個遊戲平板上面有n×m個格仔,一開始每個格仔都是關閉的,每個格仔裡面都有乙個標記

已知每種標記恰好出現兩次,也就是一共有n*m/2種標記

規定一次移動為依次(one by one不是同時)開啟一對格仔檢視裡面的標記,如果標記不一樣,格仔會自動關閉,但是你的記憶是超強了,看過了就不會忘,如果標記是一樣的,格仔從此就一直保持開啟狀態,當所有格仔都開啟時遊戲結束

請算出遊戲結束的最少期望步數

首先設dp[i][j]表示i個開啟了,j個沒開啟的期望.然後就是轉移了.

dp是由已知向未知轉移的.那麼,我們怎麼轉移呢?眾所周知轉移是憑藉兩個for

而轉移的for是根據dp方程來的,所以我們來列一下dp方程.

好,我們肯定是要開箱子了,即dp[i][j]…

dp[i][j]

我們需要開兩個箱子,開出來的兩個箱子有4種情況…

第一種,我開啟的這兩張,我第一張之前翻開過,那麼我下一張肯定是翻我之前的那張.

顯然,我翻到這種的可能性是p=i/j.然後這樣dp[i][j]=(dp[i-1][j-1]+1)p.

第二種,我開啟的這兩張,第一張無對應,然後開第二張,1,2對應.

在i+j中翻一張牌,第一張不對應的可能性是1-p,然後1,2對應的可能性是a=1/(j-1).因為一定有兩張對應,這樣的dp就是.

dp[i][j]+=(1-p)(a*(dp[i][j-2]+1)).//注意i記錄開啟了但是沒被消除的.

第三種,我開啟的兩張,第一張無對應,然後開第二張,1,2不對應,且2與已知無對應.

第一張無對應就是(1-p),第二張和第一張和已知不對應的概率是b=((j-1)-1-i)/(j-1)=(j-2-i)/(j-1).

dp[i][j]+=(1-p)(b(dp[i+2][j-2]+1)).

第四種,我開啟的兩張,第一張無對應,然後開第二張,1,2不對應,且2與已知對應.

第一張無對應就是(1-p),第二張和第一張不對應但和已知對應的概率c=1-a-b.

dp[i][j]+=(1-p)(c(dp[i][j-2]+2)).

觀察i,j的大小,j放第一維,i放第二維是可以的.因為i+2>i,不可能把i放第一維的.

#include

using

namespace std;

const

int n=

2505

;double dp[n]

[n];

intmain()

}}printf

("%.15f\n"

,dp[0]

[n])

;return0;

}

概率期望dp入門題 遊戲

題目 alice 和 bob 兩個人正在玩乙個遊戲,遊戲有很多種任務,難度為 p 的任務 p是正整數 有 1 2 p 的概率完成並得到 2 p 1 分,如果完成不了,得 0 分。一開始每人都是 0 分,從 alice 開始輪流做任務,她可以選擇任意乙個任務來做 而 bob 只會做難度為 1 的任務。...

dp基礎之網格問題

及注釋如下 usr bin python def get case m,n m,n分別為網格的行列數 建立乙個列表 f i j 表示從左上開始到第i行第j列的點的路徑數 f 0 for x in range n for y in range m f 0 0 表示初始情況 f 0 0 1 for i ...

期望及期望dp

簡單說就是概率 概率的價值 osu x 1 3 x3 3x2 3x 1 可以看出每多出乙個1,答案就會增加3x2 3x 1 於是可以維護x和x2的期望 x1 i x1 i 1 1 p i x2 i x2 i 1 2 x1 i 1 1 p i ans i ans i 1 3 x2 i 1 3 x1 i...