給你n個盤子,每個盤子可能有1,2,3個披薩
你選到每個盤子的概率是一樣的。
你如果選到空的盤子什麼都不做
如果你選到有披薩的盤子則吃掉乙個披薩
求吃完所有披薩的期望
設現在還有u個1個盤子的披薩,v個2.....,z個3....
則顯然吃掉下乙個披薩的概率為(u+v+w)/n則期望為n/(u+v+w)
那麼顯然公式就是下面這樣
\(dp[u][v][w]=n/(u+v+w)+u/(u+v+w)*dp[u-1][v][w]+v/(u+v+w)*dp[u+1][v-1][w]+w/(u+v+w)*dp[u][v+1][w-1]\)
直接記憶化搜尋dp
#include#include#include#include#include#include#include#include#include#include#include#include#define fi first
#define se second
#define debug printf(" i am here\n");
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pairpii;
const ll inf=0x3f3f3f3f3f3f3f3f;
const int maxn=3e2+5,inf=0x3f3f3f3f,mod=1e9+7;
const double eps=1e-10;
int n,a[maxn];
double dp[maxn][maxn][maxn];
int x,y,z;
double dfs(int u,int v,int w)
int main()else if(a[i]==2)else
}printf("%.10f",dfs(x,y,z));
return 0;
}
POJ2096題解 期望dp
1.有無數個bug 2.將無數個bug分為n種,s類 3.期望意義上,多少天能至少在n種s類裡都找到乙個bug 這道題和hdu4336很像。原子操作 atom operation 為每天找出乙個bug,這個bug 有可能是已找出的i種bug中的一種,這個概率為i n 有可能是已找出的j類bug中的一...
期望及期望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...
期望dp小結
前言 期望dp狀態的定義是較為顯然的,但對於狀態的轉移往往需要一些公式的推導。關鍵的幾點是狀態之間的互通性,和狀態轉移的花費,以及轉移的概率 解決期望dp的幾個技巧如下 e x y e x e y 我們所求的期望可以化為多個步驟的期望累和 相關題目 j,l 在目標確定的情況下,可以得知在目標到達目標...