http://codeforces.com/contest/148/problem/D

题目意思是龙和公主轮流从袋子里抽老鼠,袋子里有白老师 W 只,黑老师 D 只,公主先抽,第一个抽出白老鼠的胜利,龙每次抽的时候会随机跑出一只老鼠。给出W和D要你求出公主胜利的概率。

对于dp[w][d]表示有w只白老鼠d只黑老鼠的情况下公主胜利的概率,如果公主第一次就抽出白鼠,概率是 w/(w+d) ,而如果公主没有抽到白鼠,要让公主胜利,龙也不能抽到白鼠,则是 rec = d/(w+d) * (d-1)/(w+d-1) 。这是跑出来的老鼠可能是白的也可能是黑的。如果是白鼠,则剩下w-1只白鼠d-2只黑鼠,然后再公主先手,概率是rec * w/(w+d-2) * dp[w-1][d-2]。 如果是黑鼠,则剩下w只白鼠d-3只黑鼠,同样公主先手,概率是rec * (d-2)/(w+d-2) * dp[w][d-3];

最终得dp转移方程:

dp[i][j] = i / (i+j) + rec * (i / (i+j-2) * dp[i-1][j-2] + (j-2) / (i + j - 2) * dp[i][j-3]);

rec = j / (i + j)  * (j - 1) / (i + j - 1);

/************************************************* problem ID    : cf_#105D.cpp** create time    : Wed Jul 22 20:22:24 2015** auther name    : xuelanghu** auther blog    : blog.csdn.net/xuelanghu407**********************************************/#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;int n, m;
double dp[1010][1010];int main () {cin >> n >> m;for (int i=0; i<=n; i++) {dp[i][0] = 1.0;}for (int i=0; i<=m; i++) {dp[0][i] = 0.0;}for (int i=1; i<=n; i++) {dp[i][1] = (double)i / (i+1);for (int j=2; j<=m; j++) {dp[i][j] = (double)i / (i+j);double tmp = (double)j* (double)(j-1)  / (i+j) / (i+j-1);if (j>2) dp[i][j] += tmp * (double)(j-2) / (i+j-2) * dp[i][j-3];  dp[i][j] += tmp * (double)i / (i+j-2) * dp[i-1][j-2];}}printf("%.10lf\n", dp[n][m]);return 0;
}code

Codeforces Round #105 D. Bag of mice 概率dp相关推荐

  1. Codeforces 148D. Bag of mice(概率dp)

    Codeforces 148D. Bag of mice(概率dp) Description The dragon and the princess are arguing about what to ...

  2. Codeforces 148D:Bag of mice 概率DP

    Bag of mice 题目链接: http://www.codeforces.com/problemset/problem/148/D 题意: 公主和龙在玩抓老鼠的游戏,在一个包里有一些白色老鼠和一 ...

  3. Educational Codeforces Round 105 (Rated for Div. 2) 题解

    Educational Codeforces Round 105 (Rated for Div. 2) A. ABC String 枚举ABC分别为"( "和 " )&q ...

  4. Codeforces Round #743 (Div. 2) E. Paint 区间dp + 暴力

    传送门 文章目录 题意: 思路: 题意: 给你一个有nnn个像素的图像,每个像素都有一个颜色aia_iai​,保证每种颜色的图像不会超过202020个.你现在每次可以选择一个颜色,并选择一段连续的像素 ...

  5. Codeforces Round #709 (Div. 1) C. Skyline Photo dp + 单调栈优化

    传送门 文章目录 题意: 思路: 题意: 思路: 首先一个非常明显的dpdpdp式子就是f[i]=max(f[j]+val(j+1,i))f[i]=max(f[j]+val(j+1,i))f[i]=m ...

  6. Codeforces Round #627 (Div. 3) E. Sleeping Schedule dp

    传送门 文章目录 题意: 思路: 题意: 给你一天hhh小时,初始时间是000,每天可以使时间+ai+a_i+ai​或者+ai−1+a_i-1+ai​−1,问最多可以让多少天的时间在[l,r][l,r ...

  7. Codeforces Round #717 (Div. 2) D(倍增dp)

    Codeforces Round #717 (Div. 2) D 题意:n个数 q个询问,每一个询问有l和r,问你l到r这段区间中最少能分成几段,每一段中的数都是互质的. 思路:首先预处理出每一个点向 ...

  8. 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)

    题干: Ilya got tired of sports programming, left university and got a job in the subway. He was given ...

  9. Educational Codeforces Round 105 (Rated for Div. 2) C. 1D Sokoban

    题解: 我们可以得知,人可以往左边推箱子或者往右边推. 所以我们可以把所有负数放在一起,所有正数放在一起,也就是左边一堆,右边一堆. 然后开始枚举每一个special positions,假设这个点之 ...

最新文章

  1. 华为服务器显示403,禁止访问403是什么意思 网页提示403怎么解决
  2. centos7安装mongodb3.6
  3. PDGAN: A Novel Poisoning Defense Method in Federated Learning Using Generative Adversarial Network笔记
  4. Abbreviation
  5. java设计模式adapter_Java设计模式--适配器(Adapter)模式
  6. [JavaWeb]web相关概念回顾
  7. python验证码重叠_用Python机器学习搞定验证码
  8. Vivaldi解决flash插件问题
  9. 程序员失业一月转行去送外卖,晒出当天收入,还以为看错了
  10. k2 abc 官改固件下载_abc分析,k表示聚类
  11. web前端优化一些看法
  12. 乐高EV3怎么运行Python?
  13. 手机端开发(uni-app、vant、mui)优缺点分析
  14. 新一代大数据技术架构
  15. 【CCF】关于NOI Online测试有关事项的问答
  16. 201771010112罗松《面向对象程序设计(java)》第十二周学习总结
  17. 搜狗首席科学家柳超博士谈“字根嵌入”让机器更懂中文
  18. Teredo Tunnel Adapter: Error Code 10
  19. 202007 软件市场分析
  20. GCF(4)----手机认证相关知识

热门文章

  1. 我的毕设之基于WEB的征婚网站的设计与实现
  2. 胶囊网络(学习笔记)
  3. vivo输入法 需求分析
  4. Samsung Galaxy Note20 Ultra 充电曲线图
  5. java: 错误: 无效的源发行版:17
  6. Multidex记录二:缺陷解决
  7. 简单网络嗅探器编写--------java
  8. error 554, b‘DTSPM 163 smtp12最佳解决办法
  9. mysql 10061_MySQL出现:ERROR 2003(10061)问题解决
  10. 1046 划拳 (15 分) (C语言)