Codeforces Round #105 D. Bag of mice 概率dp
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相关推荐
- Codeforces 148D. Bag of mice(概率dp)
Codeforces 148D. Bag of mice(概率dp) Description The dragon and the princess are arguing about what to ...
- Codeforces 148D:Bag of mice 概率DP
Bag of mice 题目链接: http://www.codeforces.com/problemset/problem/148/D 题意: 公主和龙在玩抓老鼠的游戏,在一个包里有一些白色老鼠和一 ...
- Educational Codeforces Round 105 (Rated for Div. 2) 题解
Educational Codeforces Round 105 (Rated for Div. 2) A. ABC String 枚举ABC分别为"( "和 " )&q ...
- Codeforces Round #743 (Div. 2) E. Paint 区间dp + 暴力
传送门 文章目录 题意: 思路: 题意: 给你一个有nnn个像素的图像,每个像素都有一个颜色aia_iai,保证每种颜色的图像不会超过202020个.你现在每次可以选择一个颜色,并选择一段连续的像素 ...
- 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 ...
- 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 ...
- Codeforces Round #717 (Div. 2) D(倍增dp)
Codeforces Round #717 (Div. 2) D 题意:n个数 q个询问,每一个询问有l和r,问你l到r这段区间中最少能分成几段,每一段中的数都是互质的. 思路:首先预处理出每一个点向 ...
- 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)
题干: Ilya got tired of sports programming, left university and got a job in the subway. He was given ...
- Educational Codeforces Round 105 (Rated for Div. 2) C. 1D Sokoban
题解: 我们可以得知,人可以往左边推箱子或者往右边推. 所以我们可以把所有负数放在一起,所有正数放在一起,也就是左边一堆,右边一堆. 然后开始枚举每一个special positions,假设这个点之 ...
最新文章
- 华为服务器显示403,禁止访问403是什么意思 网页提示403怎么解决
- centos7安装mongodb3.6
- PDGAN: A Novel Poisoning Defense Method in Federated Learning Using Generative Adversarial Network笔记
- Abbreviation
- java设计模式adapter_Java设计模式--适配器(Adapter)模式
- [JavaWeb]web相关概念回顾
- python验证码重叠_用Python机器学习搞定验证码
- Vivaldi解决flash插件问题
- 程序员失业一月转行去送外卖,晒出当天收入,还以为看错了
- k2 abc 官改固件下载_abc分析,k表示聚类
- web前端优化一些看法
- 乐高EV3怎么运行Python?
- 手机端开发(uni-app、vant、mui)优缺点分析
- 新一代大数据技术架构
- 【CCF】关于NOI Online测试有关事项的问答
- 201771010112罗松《面向对象程序设计(java)》第十二周学习总结
- 搜狗首席科学家柳超博士谈“字根嵌入”让机器更懂中文
- Teredo Tunnel Adapter: Error Code 10
- 202007 软件市场分析
- GCF(4)----手机认证相关知识
热门文章
- 我的毕设之基于WEB的征婚网站的设计与实现
- 胶囊网络(学习笔记)
- vivo输入法 需求分析
- Samsung Galaxy Note20 Ultra 充电曲线图
- java: 错误: 无效的源发行版:17
- Multidex记录二:缺陷解决
- 简单网络嗅探器编写--------java
- error 554, b‘DTSPM 163 smtp12最佳解决办法
- mysql 10061_MySQL出现:ERROR 2003(10061)问题解决
- 1046 划拳 (15 分) (C语言)