题意:

      一个人玩纸牌游戏,他每天最多玩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. docker swarm模式跨主机连接

    一.前言 当我们开发好微服务之后,考虑到灵活快速持续部署的需要,通常会考虑将其Docker镜像化并在Docker环境下运行.由于微服务个数通常会较多,把所有微服务部署在一台docker主机上是不现实的 ...

  2. 关于 FreeBSD 老版本如何安装软件

    关于 FreeBSD 不被支持版本如何安装软件: ALLOW_UNSUPPORTED_SYSTEM=yes写到/etc/ make.conf ​​​​ 如果提示没有make.conf 请手动新建一个文 ...

  3. 2019 GDUT Rating Contest I : Problem E. Convention

    题面: E. Convention Input file: standard input Output file: standard output Time limit: 1 second Memory ...

  4. gtk中构件添加背景图

    在gtk中我们总想要去给构件添加背景图,具体函数代码如下 void chang_background(GtkWidget *widget, int w, int h, const gcha r *pa ...

  5. 得分(JAVA语言)

    package 第三章习题; /*  * 给出一个由O和X组成的串(长度为1~80),统计得分.  * 每个O得分为目前连续出现的O的个数,X得分为0.  * 例如,OOXXOXXOOO的得分为  * ...

  6. PTA 数组元素的区间删除

    6-6 数组元素的区间删除 (20 分)   给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: ...

  7. 【linux】系统编程-8-Socket

    目录 前言 11. 套接字 11.1 Socket简介 11.2 socket() 11.3 bind() 11.4 connect() 11.5 listen() 11.6 accept() 11. ...

  8. 【RTOS】堆栈与任务栈

    目录 前言 概念 双堆栈指针 要点 Cortex-M3寄存器介绍 寄存器图 简要介绍 知识 出入栈 入栈(压栈) 出栈 重点知识 异常的响应序列* 入栈 取向量 更新寄存器 小结知识* FreeRTO ...

  9. Android Studio 有关 RecycleView 的使用

    •导入相关包 右击File->Project Structure: 搜索  com.android.support: 找到 recyclerview: 导入好后 Sync Now 同步一下,到这 ...

  10. vue实现日历

    vue实现日历 之前在上家公司做过一个公司人员考勤的东西,里面需要用到日历,当时自己用vue随便写了一个,比较简单 下面代码是删掉了其他功能的代码,只留下日历部分 <template> & ...