题目链接

题意:

  你玩纸牌, 如果当天晚上你赢的局数比例 大于 p, 就去睡觉, 第二天继续。 如果小于等于p, 就去睡觉, 并且以后都不玩了。

  每晚最多玩n局, 每局赢的概率为p , 求玩的天数的期望。

思路:

  设dp[i][j] 为玩了i局, 赢了j局的概率。

  则期望E = sigma(i = 0, 1, 2, 3, 4, ........)x *dp[n][i]。

  为无穷级数。

  先来求dp[i][j]。

  dp[i]][j] = dp[i-1][j] * (1 - p) = dp[i-1][j-1] * p。

  化简得:E = 1 / sum(dp[n][i])

代码如下:

 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <ctime>
 6 #include <set>
 7 #include <map>
 8 #include <list>
 9 #include <queue>
10 #include <string>
11 #include <vector>
12 #include <fstream>
13 #include <iterator>
14 #include <iostream>
15 #include <algorithm>
16 using namespace std;
17 #define LL long long
18 #define MAXN 110
19 #define MOD 1000000007
20 #define eps 1e-6
21 double p;
22 int a, b;
23 int n;
24 double dp[MAXN][MAXN];
25 void init()
26 {
27     memset(dp, 0, sizeof(dp));
28     dp[0][0] = 1;
29     dp[0][1] = 0;
30
31     for(int i = 1; i <= n; i ++)
32     {
33         dp[i][0] = dp[i-1][0] * (1.0 - p);
34         for(int j = 1; j * b <= a * i; j ++)
35             dp[i][j] = dp[i-1][j] * (1.0 - p) + dp[i-1][j-1] * p;
36     }
37 }
38
39 int main()
40 {
41     int T;
42     int kcase = 0;
43     scanf("%d", &T);
44     while(T --)
45     {
46         scanf("%d/%d %d", &a, &b, &n);
47         p = (double)a / (double)b;
48         init();
49         double ans = 0.0;
50         for(int i = 0; i * b <= n * a; i ++)
51             ans += dp[n][i];
52         ans = 1 / ans;
53         printf("Case #%d: %d\n", ++ kcase, (int)ans);
54     }
55     return 0;
56 }

View Code

转载于:https://www.cnblogs.com/By-ruoyu/p/4682431.html

Uva_11427 Expect the Expected相关推荐

  1. UVa11427 Expect the Expected

    数学期望 概率递推 每一天的概率都是独立且相同的.可以先推出每天打i盘赢j盘的概率f[i][j] f[i][j]=f[i-1][j]*(1-p) + f[i-1][j-1]*p 输 赢 设此人打一天胜 ...

  2. Jest测试语法系列之Expect

    Methods Expect主要用于实现验证操作,Jest的Expect提供了如下的验证方法: expect(value) expect.extend(matchers) expect.anythin ...

  3. 全网最全面的Expect的方法等解析!!! 建议收藏!

    Expect 在编写测试时,通常需要检查值是否满足某些条件.expect使您可以访问许多"匹配器",以使您可以验证不同的内容. 有关Jest社区维护的其他Jest匹配器,请查看 方 ...

  4. 前端测试框架Jest系列教程 -- Expect(验证)

    写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多"Matchers",这些"匹配器"允许您验证不同的东西. ...

  5. gtest简介及简单使用

    gtest是一个跨平台(Liunx.Mac OS X.Windows.Cygwin.Windows CE and Symbian)的C++测试框架,有google公司发布.gtest测试框架是在不同平 ...

  6. Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX

    转自:http://brokendreams.iteye.com/blog/2250109 功能简介: 原子量和普通变量相比,主要体现在读写的线程安全上.对原子量的是原子的(比如多线程下的共享变量i+ ...

  7. 并发编程(三)原子操作CAS

    1.CAS(Compare And Swap)原子操作: 假定有两个操作A和B,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的. 通过 ...

  8. Java Review - 并发编程_原子操作类原理剖析

    文章目录 概述 原子变量操作类 主要方法 incrementAndGet .decrementAndGet .getAndIncrement.getAndDecrement boolean compa ...

  9. 原子操作类AtomicInteger详解

    为什么需要AtomicInteger原子操作类? 对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的.num++解析为num=num+1,明显,这个操作 ...

最新文章

  1. GNN与Transformer融合促进药物发现 | 2022几何图机器学习展望
  2. vmboxcentos安装重启又要安装_Windows 10八月更新再遇尴尬:安装失败 或安装后随机重启...
  3. hdu 4288 Coder
  4. 不同映射方式下cache的失效率_详解发动机在不同工况下的喷油量控制方式
  5. android view getwidth 0,Android中View.getWidth()和View.getMeasuredWidth()的区别
  6. 朴素贝叶斯算法--过滤垃圾短信
  7. C语言-printf变参函数与它的实参转换/转换模板
  8. 药品缺陷检测中的机器视觉技术
  9. 总有一种正能量触动你的心灵,读刘丁宁的一封信
  10. “飞扬小字典” -- 辅助记忆的小工具
  11. Excel函数应用(3)--筛选随机数
  12. 《易经》里的28条法则与64个大智慧
  13. vue ant design a-table表格标题(title)添加icon样式
  14. vue父子传值,slot插槽的使用
  15. python爬虫:爬取百度小姐姐照片
  16. 【云服务架构】什么是云原生应用?有哪些特点?来看看阿里云大学公开课给你答案
  17. class 和 def
  18. 用计算机绘制采油曲线,绘制采油曲线.ppt
  19. 正则数据解析酷狗与天气案例
  20. 有了这6个东西之后,学Python还愁学不成?楼下大爷都入门了

热门文章

  1. scrapy item.py
  2. 2.6 更多导数的例子
  3. flask.Blueprint
  4. Oracle数据备份和恢复
  5. vmware vsphere powercli 因为在此系统中禁止执行脚本
  6. 思杰技术的论坛网址(转)
  7. Java基础学习总结(77)——Java枚举再总结
  8. Java基础学习总结(41)——JPA常用注解
  9. python coding style why_Python 编码规范(Style Guide)2
  10. babel css3新特性_前端总结(后续不断更新)