题意:

      一个人玩纸牌游戏,他每天最多玩n局,枚举获胜的概率是a/b,每天玩牌只要获胜概率达到p,那么他今天就不玩了,明天接着玩,如果有一天他的概率没有达到p,(没有达到p的话他今天一定是玩了n次),那么他以后就在也不玩了,问题是在平均的情况下,他能玩多少个晚上的牌?

思路:

      我们可以先算他只玩一天就失败了的概率,P[i][j]表示玩了i次,赢了j次,当

j/i<=p的时候,根据全概率公式,P[i][j] = P[i-1][j]*(1-p)+P[i-1][j-1]*p前面是输了后面是赢了,端点值是P[0][0] = 1 ,P[0][1] = 0,其他部分全都是0,记得要把其他部分清成0,因为更新是不连续的,这样之后只玩一天的概率等于Q = P[n][0] + P[n][1] +.....

这样答案就是(期望)

玩一天 1 * Q

玩两天 2 * Q(1-Q)

玩三天 3 * Q(1-Q)^2

......

化简后 Ans = 1 / Q;

说下化简的方法吧,有两种

(1)

   a 令s = EX/Q = 1+2(1-Q)+3(1-Q)^2+4(1-Q)^3+...



   b     (1-Q)s = (1-Q)+2(1-Q)^2+3(1-Q)^3+....

a - b得到

EX = Qs = 1+(1-Q)+(1-Q)^2+(1-Q)^3+..=1/Q

(2)

设数学期望为e天,把情况分为两类,第一天晚上出头丧气概率Q期望1,第一天晚上兴高采烈,概率(1-Q)期望e + 1,解得 e = Q * 1 + (1 - Q) * (e + 1) => e = 1/Q;

#include<stdio.h>

#include<string.h>

double P[105][105];

int main ()

{

   int n ,a ,b ,i ,j;

   int t ,cas = 1;

   scanf("%d" ,&t);

   while(t--)

   {

      scanf("%d/%d%d" ,&a ,&b ,&n);

      double p = a * 1.0 / b;

      memset(P ,0 ,sizeof(P));

      P[0][0] = 1 ,P[0][1] = 0;

      for(i = 1 ;i <= n ;i ++)

      for(j = 0 ;j * b <= i * a ;j ++)

      {

         P[i][j] = P[i-1][j] * (1 - p) ;

         if(j >= 1)P[i][j] +=  P[i-1][j-1] * p;

      }

      double Ans = 0;

      for(j = 0 ;j * b <= n * a ;j ++)

      Ans += P[n][j];

      printf("Case #%d: %d\n" ,cas ++ ,(int)(1 / Ans));

   }

   return 0;

}

   

UVA11427玩纸牌(全概率+递推)的更多相关文章

  1. UVA 1541 - To Bet or Not To Bet(概率递推)

    UVA 1541 - To Bet or Not To Bet 题目链接 题意:这题题意真是神了- -.看半天,大概是玩一个游戏,開始在位置0.终点在位置m + 1,每次扔一个硬币,正面走一步,反面走 ...

  2. UVa 557 (概率 递推) Burger

    题意: 有两种汉堡给2n个孩子吃,每个孩子在吃之前要抛硬币决定吃哪一种汉堡.如果只剩一种汉堡,就不用抛硬币了. 求最后两个孩子吃到同一种汉堡的概率. 分析: 可以从反面思考,求最后两个孩子吃到不同汉堡 ...

  3. UVA 557 - Burger(概率 递推)

     Burger  When Mr. and Mrs. Clinton's twin sons Ben and Bill had their tenth birthday, the party was ...

  4. UVA 10288 - Coupons(概率递推)

    UVA 10288 - Coupons option=com_onlinejudge&Itemid=8&page=show_problem&category=482&p ...

  5. UVa 11021 (概率 递推) Tribles

    Tribble是麻球? 因为事件都是互相独立的,所以只考虑一只麻球. 设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式: f(i) = P0 + P1 * f(i-1) + P2 ...

  6. BZOJ.2134.[国家集训队]单选错位(概率 递推)

    题目链接 如题目中的公式,我们只要把做对每个题的概率加起来就可以了(乘个1就是期望). 做对第i道题的概率 \[P_i=\frac{1}{max(a_{i-1},a_i)}\] 原式是 \(P_i=\ ...

  7. UVa 557 Burger (概率+递推)

    题意:有 n 个牛肉堡和 n 个鸡肉堡给 2n 个客人吃,在吃之前抛硬币来决定吃什么,如果剩下的汉堡一样,就不用投了,求最后两个人吃到相同的概率. 析:由于正面考虑还要要不要投硬币,太麻烦,所以我们先 ...

  8. UVA 11021 - Tribles(概率递推)

    UVA 11021 - Tribles 题目链接 题意:k个毛球,每一个毛球死后会产生i个毛球的概率为pi.问m天后,全部毛球都死亡的概率 思路:f[i]为一个毛球第i天死亡的概率.那么 f(i)=p ...

  9. 大概是:整数划分||DP||母函数||递推

    整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...

随机推荐

  1. 解决:layUI数据表格+简单查询

    解决:layUI数据表格+简单查询 最近在用layui写项目,在做到用户查询时,发现在layui框架里只有数据表格,不能增加查询.于是自己摸索了一下,写个笔记记录一下. 我想要的效果: 1.定义查询栏 ...

  2. 盘点Excel中的那些有趣的“bug”

    本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. Excel 1.0早在1985年正式进入市场,距今已经有36年了,虽然在推出 ...

  3. java 入门环境搭建

    Java帝国的诞生 1972年C诞生 1982年C++诞生 1995年JAVA诞生,为了实现真正的跨平台,在操作系统之上又加了抽象层,叫做JAVA的虚拟机,统称JVM 三高问题: 高可用 高性能 高并 ...

  4. django Form 效验

    Django 登入效验 .py from django import forms from student import models from django.core.exceptions impo ...

  5. mysql内一些可以延时注入的查询语句

        一.sleep() 配合其他函数进行使用将十分方便,如下所示: 拆分讲解: select substr(database(),1,1) ; 截取当前数据库的第一位,转换为ascii码值: se ...

  6. 靶场练习-Sqli-labs通关记录(1-4关)

                              0x00 实验环境 本地:Win 10 靶场:sqli-labs(共65关,每日一关) 0x02 通关记录 简介:一天一关! (1)第一关: 简单的 ...

  7. React实用技巧

    取消请求 React 中当前正在发出请求的组件从页面上卸载了,理想情况下这个请求也应该取消掉,那么如何把请求的取消和页面的卸载关联在一起呢? 这里要考虑利用 useEffect 传入函数的返回值: u ...

  8. 计算机图形学中使用Turbo C++画图步骤

    一.下载安装Turbo C++ 我安装的是Turbo C++ 3.2.2.0下载链接 二.画图 1.打开Turbo C++,点击右下角start turbo C++ 2.点击file ->new ...

  9. 前端-CS-04

    一:DOM(文档对象模型) document 简写DOM 1.DOM中定义变量用 var  如下截图中:定义demo变量 2.取一个input输入框中的值的方法: 1)先如1中,在dom中顶一个一个变 ...

  10. python3 int() 各数据类型转int

    print(int('0b1010',0))#二进制数print(int('0xa',0))#十六进制数print(int('0xa',16))print(int('a',16))print(int( ...