标签:
设d(i, j)表示前i局每局获胜的比例均不超过p,且前i局共获胜j局的概率。
d(i, j) = d(i-1, j) * (1-p) + d(i-1, j-1) * p
则只玩一天就就不再玩的概率Q = sum{d(n, i) | 0 ≤ i ≤ p*n}
这是一个无穷级数,可以用高数的一些知识来解决。
另1-Q = t
书上还介绍了一种更简单的方法,假设所求期望为e
第一天玩完就去睡觉,概率为Q,期望为1;第一天玩得高高兴兴,概率为1-Q,期望为1+e
于是有等式:e = Q + (1-Q)(1+e)
1 #include <cstdio> 2 #include <cstring> 3 const int maxn = 100 + 10; 4 5 double d[maxn][maxn]; 6 7 int main() 8 { 9 //freopen("in.txt", "r", stdin); 10 11 int T; 12 scanf("%d", &T); 13 for(int kase = 1; kase <= T; kase++) 14 { 15 int n, a, b; 16 scanf("%d/%d%d", &a, &b, &n); 17 double p = (double)a / b; 18 memset(d, 0, sizeof(d)); 19 d[0][0] = 1; d[0][1] = 0; 20 for(int i = 1; i <= n; i++) 21 for(int j = 0; j*b <= a*i; j++) 22 { 23 d[i][j] = d[i-1][j]*(1-p); 24 if(j) d[i][j] += d[i-1][j-1]*p; 25 } 26 27 double Q = 0; 28 for(int i = 0; i*b <= a*n; i++) Q += d[n][i]; 29 printf("Case #%d: %d\n", kase, (int)(1/Q)); 30 } 31 32 return 0; 33 }
UVa 11427 (期望 DP) Expect the Expected
标签:
原文地址:http://www.cnblogs.com/AOQNRMGYXLMV/p/4330774.html