【UVA】【11427】玩纸牌

数学期望

  也是刘汝佳老师白书上的例题……感觉思路很神奇啊

 1 //UVA 11427
 2 #include<cmath>
 3 #include<cstdio>
 4 #include<cstring>
 5 #define rep(i,n) for(int i=0;i<n;++i)
 6 #define F(i,j,n) for(int i=j;i<=n;++i)
 7 double d[105][105],p;
 8 int main(){
 9     int t,n,a,b;
10     scanf("%d",&t);
11     F(cs,1,t){
12         scanf("%d/%d%d",&a,&b,&n);
13         p=(double)a/b;
14         memset(d,0,sizeof d);
15         d[0][0]=1.0; d[0][1]=0.0;
16         F(i,1,n)
17             for(int j=0;j*b<=a*i;j++){
18                 d[i][j]=d[i-1][j]*(1-p);
19                 if (j) d[i][j]+=d[i-1][j-1]*p;
20             }
21         double Q=0.0;
22         for(int j=0;j*b<=a*n;j++) Q+=d[n][j];
23         printf("Case #%d: %d\n",cs,(int)(1/Q));
24     }
25     return 0;
26 }

时间: 2024-10-20 10:59:58

【UVA】【11427】玩纸牌的相关文章

uva 11427 - Expect the Expected(概率)

题目链接:uva 11427 - Expect the Expected 题目大意:你每天晚上都会玩纸牌,每天固定最多玩n盘,每盘胜利的概率为p,你是一个固执的人,每天一定要保证胜局的比例大于p才会结束游戏,若n局后仍没有,就会不开心,然后以后再也不完牌,问说你最多会玩多少个晚上. 解题思路:当j/i ≤ p时有dp(i-1,j) (1-p) + dp(i-1, j-1) p,其他dp(i,j) = 0.Q=∑d(n,i) 列出数学期望公式: EX=Q+2Q(1?Q)+3Q(1?Q)2+- s=

UVA 11427 (概率DP+期望)

题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35396 题目大意:每晚打游戏.每晚中,赢一局概率p,最多玩n局,如果最后不能保证胜率大于p,则从此不玩.问打游戏的天数的期望. 解题思路: 首先分析每天晚上的. 设f[i][j]为前i天,已经赢j局的概率. 由全概率公式,那么当天晚上完蛋的概率q=f[n][0]+f[n][1]+.....f[n][终止条件]. 至于为什么从完蛋(输)的角度考虑,主要是由于n局的

UVA 11427 - Expect the Expected(概率递推期望)

UVA 11427 - Expect the Expected 题目链接 题意:玩一个游戏,赢的概率p,一个晚上能玩n盘,如果n盘都没赢到总赢的盘数比例大于等于p,以后都不再玩了,如果有到p就结束 思路:递推,dp[i][j]表示玩i盘,赢j盘的概率,那么一个晚上玩了n盘小于p的概率递推式为: dp(i,j)=dp(i?1,j)?(1?p)+dp(i?1,j?1)?p 总和为Q=dp(n,0)+dp(n,1)+...+dp(n,x)(x/n<p) 那么每个晚上失败的概率Q就求出来了,那么平均玩的

Expect the Expected UVA - 11427(概率dp)

题意: 每天晚上你都玩纸牌,如果第一次就赢了,就高高兴兴的去睡觉,如果输了就继续玩.假如每盘游戏你获胜的概率都为p,每盘游戏输赢独立.如果当晚你获胜的局数的比例严格大于p时才停止,而且每天晚上最多只能玩n局,如果获胜比例一直不超过p的话,以后就再也不玩纸牌了.问在平均情况下,你会玩多少个晚上纸牌. 解析: 求出一天的就完蛋的概率P,然后符合超几何分布,则期望的天数即为1/P 设dp[i][j]为前i次游戏 j次成功的概率  则 dp[i][j] = dp[i-1][j-1]*p + dp[i-1

UVa 11427 (期望 DP) Expect the Expected

设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 将1-Q带入t,并将左边的Q乘过去得: 书上还介绍了一种更简单的方法,假设所求期望为e 第一天玩完就去睡觉,概率为Q,期望为1:第一天玩得高高兴兴,概率为1-Q,

UVA - 11427 Expect the Expected (DP+概率)

Description Problem A Expect the Expected Input: Standard Input Output: Standard Output   Some mathematicalbackground. This problem asks you to compute the expected value of arandom variable. If you haven't seen those before, the simple definitions a

UVA.11427.Expect the Expected(期望)

题目链接 \(Description\) https://blog.csdn.net/Yukizzz/article/details/52084528 \(Solution\) 首先每一天之间是独立的. 所以设\(f[i][j]\)为前\(i\)天赢了\(j\)局的概率,要满足当前获胜比例始终≤\(p\).容易得出转移方程. 所以玩完\(n\)局之后获胜比例仍不超过\(p\)的概率为\(Q=\sum_{i=0}^{\frac in\leq p}f[n][i]\). 设\(E\)为期望玩牌天数.有

UVA 11427 Expect the Expected(DP+概率)

链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35396 [思路] DP+概率 见白书. [代码] 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 5 const int N = 100+10; 6 7 int n,a,b; 8 double f[N][N]; 9 10 int main() { 11 int T,kase=

uva 11427 Expect the Expected

https://vjudge.net/problem/UVA-11427 大佬题解: http://www.cnblogs.com/xiong-/archive/2013/08/14/3258476.html #include<cstring> #include<cstdio> using namespace std; double Q,dp[101][101],p; int main() { int t,a,b,n; scanf("%d",&t); f