题目传送门

题意:小明每晚都玩游戏,每一盘赢的概率都是p,如果第一盘就赢了,那么就去睡觉,第二天继续玩;否则继续玩,玩到赢的比例大于p才去睡;如果一直玩了n盘还没完成,就再也不玩了;问他玩游戏天数的期望;

思路:由于每次玩游戏,每天玩游戏都是独立重复试验,所以可以考虑一天玩游戏,玩不到p的概率(p都玩不到?)。

  设$dp[i][j]$表示玩了i次游戏,获胜j次,并且过程中期望都不会超过p的概率。

  则显然有:$dp[i][j]=dp[i-1][j]*(1-p)+dp[i-1][j-1]*p$。

   需要注意的是,我们必须保证过程中游戏分数的期望不会超过p,所以每一个状态都必须是$\frac{j}{i}<p$,而且由于是T组样例,记得每次都要清空dp数组,否则上一次的答案可能会影响当前这次(上一次不合法的状态到了这一次变成合法状态了,被统计入了答案)。

  然后求出总的失败概率,设概率为q,期望天数为e。

  由全概率公式可得$e=q*1+(1-q)*(e+1)$

  移项得$e=\frac {1}{q}$

#pragma GCC optimize (2)
#pragma G++ optimize (2)
#pragma comment(linker, "/STACK:102400000,102400000")
#include<bits/stdc++.h>
#include<unordered_map>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define dep(i,b,a) for(int i=b;i>=a;--i)
#define clr(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define pii pair<int,int >
using namespace std;
typedef long long ll;
ll rd()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int maxn=;
double dp[maxn][maxn];
int x,y,n;
int main(){
int T,cat=;
cin>>T;
while(T--){
scanf("%d/%d%d",&x,&y,&n);
double p=(double)x/y;
clr(dp,);
dp[][]=;
rep(i,,n){
for(int j=;j*y<=i*x;j++){
dp[i][j]=dp[i-][j]*(-p);
if(j)dp[i][j]+=dp[i-][j-]*p;
}
}
double res=;
for(int i=;i*y<=n*x;i++){
res+=dp[(int)n][i];
}
printf("Case #%d: %d\n",cat++,(int)(/res));
}
}

UVA11427 Expect the Expected 概率dp+全概率公式的更多相关文章

  1. UVA - 11427 Expect the Expected (概率dp)

    Some mathematical background. This problem asks you to compute the expected value of a random variab ...

  2. 11427 - Expect the Expected(概率期望)

    11427 - Expect the Expected Some mathematical background. This problem asks you to compute the expec ...

  3. UVA 11427 - Expect the Expected(概率递归预期)

    UVA 11427 - Expect the Expected 题目链接 题意:玩一个游戏.赢的概率p,一个晚上能玩n盘,假设n盘都没赢到总赢的盘数比例大于等于p.以后都不再玩了,假设有到p就结束 思 ...

  4. uva 11427 - Expect the Expected(概率)

    题目链接:uva 11427 - Expect the Expected 题目大意:你每天晚上都会玩纸牌,每天固定最多玩n盘,每盘胜利的概率为p,你是一个固执的人,每天一定要保证胜局的比例大于p才会结 ...

  5. UVA 11427 Expect the Expected(DP+概率)

    链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35396 [思路] DP+概率 见白书. [代码] #include&l ...

  6. UVa11427 Expect the Expected

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

  7. UVa 11427 Expect the Expected (数学期望 + 概率DP)

    题意:某个人每天晚上都玩游戏,如果第一次就䊨了就高兴的去睡觉了,否则就继续直到赢的局数的比例严格大于 p,并且他每局获胜的概率也是 p,但是你最玩 n 局,但是如果比例一直超不过 p 的话,你将不高兴 ...

  8. HDU 4405:Aeroplane chess(概率DP入门)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Problem Description   Hzz loves ...

  9. ZOJ3582:Back to the Past(概率DP)

    Recently poet Mr. po encountered a serious problem, rumor said some of his early poems are written b ...

随机推荐

  1. vue provide/inject 父组件如何给孙子组件传值

    一般情况下我们父子组件之间的传值用的是props,这个就不多说了,但是如果想让父组件给子组件的组件传值怎么办呢,如果还用props的话肯能会比较复杂,这里我们就可以用到 provide 和 injec ...

  2. Socket网络编程--初级

    如果想开发一个基于TCP/IP协议的网络程序,应用程序之间则主要通过Socket交换数据 .NET Socket支持四种编程模式 1.居于阻塞模式的Socket编程 2.”非阻塞“模式的Socket编 ...

  3. 2018-8-10-win10-UWP-圆形等待

    title author date CreateTime categories win10 UWP 圆形等待 lindexi 2018-08-10 19:16:50 +0800 2018-2-13 1 ...

  4. svnlook - Subversion 仓库检索工具

    SYNOPSIS 总览 svnlook command /path/to/repos [options] [args] OVERVIEW 概述 Subversion 是一个版本控制系统,允许保存旧版本 ...

  5. PHP-在排序数组中查找元素的第一个和最后一个位置

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...

  6. python 操作redis数据

    python 操作redis 各种类型的数据 # encoding:utf-8 import redis import time def main(): """ redi ...

  7. hdu 5792 树状数组+离散化+思维

    题目大意: Given a sequence A with length n,count how many quadruple (a,b,c,d) satisfies: a≠b≠c≠d,1≤a< ...

  8. ueditor 加载文本

    一. 定义一个隐藏区域,然后用js获取 // 定义 文本框 <script id="editor" type="text/plain" style=&qu ...

  9. IT类影视

    1.爱奇艺 代码(The Code) 2.爱奇艺 操作系统革命(Revolution OS) 3.爱奇艺 互联网之子 4.爱奇艺 深网

  10. thinkphp 常量参考

    预定义常量 预定义常量是指系统内置定义好的常量,不会随着环境的变化而变化,包括: URL_COMMON 普通模式 URL (0) URL_PATHINFO PATHINFO URL (1) URL_R ...