• 概率dp

  • 设 f(i,j)f(i,j) 表示有 ii 只白鼠,jj 只黑鼠时A先手胜的概率

  • 初始状态

  • 全白时,显然先手必胜

  • 有一只黑鼠时,先手若抽到黑鼠则后手必胜,所以先手首回合必须抽到白鼠

  • f(i,0)=1,f(i,1)=\frac{i}{i+1}f(i,0)=1,f(i,1)=i+1i​

  • 转移方程 f(i,j)f(i,j)

  • 先手抽到白鼠,胜:\frac{i}{i+j}i+ji​

  • 先手抽到黑鼠,后手抽到白鼠,败: 00

  • 先手抽到黑鼠,后手抽到黑鼠,跑一只白鼠:\frac{j}{i+j}\times \frac{j-1}{i+j-1}\times \frac{i}{i+j-2}\times f(i-1,j-2)i+jj​×i+j−1j−1​×i+j−2i​×f(i−1,j−2)

  • 先手抽到黑鼠,后手抽到黑鼠,跑一只黑鼠:\frac{j}{i+j}\times \frac{j-1}{i+j-1}\times \frac{j-2}{i+j-2}\times f(i,j-3)i+jj​×i+j−1j−1​×i+j−2j−2​×f(i,j−3)

  • f(i,j)=\frac{i}{i+j}+\frac{j}{i+j}\times \frac{j-1}{i+j-1}\times \frac{i}{i+j-2}\times f(i-1,j-2)+\frac{j}{i+j}\times \frac{j-1}{i+j-1}\times \frac{j-2}{i+j-2}\times f(i,j-3)f(i,j)=i+ji​+i+jj​×i+j−1j−1​×i+j−2i​×f(i−1,j−2)+i+jj​×i+j−1j−1​×i+j−2j−2​×f(i,j−3)

  • O(wb)O(wb)

 #include<bits/stdc++.h>
using namespace std;
inline int read()
{
int N=,C=;char tf=getchar();
for(;!isdigit(tf);tf=getchar())C|=tf=='-';
for(;isdigit(tf);tf=getchar())N=(N<<)+(N<<)+(tf^);
return C?-N:N;
}
const int N=;
int w,b;
double f[N][N];
int main()
{
w=read(),b=read();
for(int i=;i<=w;++i)
f[i][]=1.0,f[i][]=1.0*i/(i+); //全白必胜,一黑首回合必须抽到白鼠
if(!b||b==) return printf("%.9lf\n",f[w][b]),;
for(int i=;i<=w;++i)
for(int j=;j<=b;++j){
f[i][j]=1.0*i/(i+j);
f[i][j]+=1.0*j/(i+j)*(j-)/(i+j-)*i/(i+j-)*f[i-][j-];//跑白
//自我感觉这里可以改成j>=3;
//不过没验证过
if(j^) f[i][j]+=1.0*j/(i+j)*(j-)/(i+j-)*(j-)/(i+j-)*f[i][j-];//跑黑
}
printf("%.9lf\n",f[w][b]); return ;
}

概率dp 148 D的更多相关文章

  1. 概率dp专辑

    求概率 uva11021 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  2. 动态规划之经典数学期望和概率DP

    起因:在一场训练赛上.有这么一题没做出来. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6829 题目大意:有三个人,他们分别有\(X,Y,Z\)块钱 ...

  3. Codeforces 28C [概率DP]

    /* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队 ...

  4. HDU 4405 Aeroplane chess (概率DP)

    题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i  这个位置到达 n ...

  5. POJ 2096 Collecting Bugs (概率DP)

    题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...

  6. POJ 2151 Check the difficulty of problems (概率DP)

    题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...

  7. 概率DP light oj 1030

    t组数据 n块黄金 到这里就捡起来 出发点1 到n结束  点+位置>n 重掷一次 dp[i] 代表到这里的概率 dp[i]=(dp[i-1]+dp[i-2]... )/6  如果满6个的话 否则 ...

  8. hdu 4050 2011北京赛区网络赛K 概率dp ***

    题目:给出1-n连续的方格,从0开始,每一个格子有4个状态,左右脚交替,向右跳,而且每一步的步长必须在给定的区间之内.当跳出n个格子或者没有格子可以跳的时候就结束了,求出游戏的期望步数 0:表示不能到 ...

  9. [转]概率DP总结 by kuangbin

    概率类题目一直比较弱,准备把kuangbin大师傅总结的这篇题刷一下! 我把下面的代码换成了自己的代码! 原文地址:http://www.cnblogs.com/kuangbin/archive/20 ...

随机推荐

  1. unrecognized import path "golang.org/x/*"的解决办法

    由于国内网络原因,因此访问https://golang.org/网站会被限制.所以在go get下载其他第三方包的时候,如果这个第三方包又引用了https://golang.org/x/下的包,通常会 ...

  2. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(6.15)-- 写命令

    6.15 Write command 写命令 写命令写数据和元数据,如果适用介质,发到逻辑块相应的I/O controller.主机也可以指定保护信息,作为操作的一部分包含进来. 命令用Command ...

  3. [Agc005D/At2060] Minimum Sum - 单调栈

    鉴于早上那题让我怀疑单调栈白学,特意来复习下单调栈 题意 考虑按照每个元素对答案的贡献来统计,那么我们只需要找到每个元素左边右边第一个比它小的就可 这题给的又是排列,简直不能再良心 #include ...

  4. Vim入门——Windows下安装

    下载页面:https://www.vim.org/download.php Windows选用的是MS-Windows: 下图为展示: 因为最近被墙,镜像貌似没中国内陆地区,因此,选择使用GitHub ...

  5. vue源码的入口(四)

    我们之前提到过 Vue.js 构建过程,在 web 应用下,我们来分析 Runtime + Compiler 构建出来的 Vue.js,它的入口是 src/platforms/web/entry-ru ...

  6. Test Blog

    计算机实习报告 姓名:王方正 学号:20174314 一.开发任务 题目源自<程序设计实践教程>教材22题,学生基本信息管理.描述略. 二.需求分析 1.说明自己针对这个任务将完成哪些功能 ...

  7. 登录时 按Enter 进入登录界面 或者下一行

    function keyLogin() { if (event.keyCode == 13) //回车键的键值为13 $(".btn-submit").click(); //调用登 ...

  8. python算术

    ''' 1.对每个数进行平方, 2.求和 ''' print(sum(x ** 2 for x in range(4)))

  9. Importing data in R 1

    目录 Importing data in R 学习笔记1 flat files:CSV txt文件 packages:readr read_csv() read_tsv read_delim() da ...

  10. NG-ALAIN 边学边记2

    1. 下载Git上的源码  : https://github.com/ng-alain/ng-alain.git 2.解压文件: 3.进入到目录下: 4.打开CMD 切换到 E:\NgAlain\ng ...