CF 148D Bag of mice 题解
这是我做的第一道概率DP题;
做完后发现没有后效性的DP是真的水;
在这里说主要是再捋顺一下思路;
设f[i][j]表示有i只白鼠,j只黑鼠是获胜的概率;
显然:f[i][0]=1;
然后分四种情况:
1.先手刚好拿到白鼠:概率是i/(i+j);
2.先手拿到黑鼠,后手拿到了白鼠:概率为0;
3.先手拿到了黑鼠,后手拿到了也黑鼠,并且跑的是白鼠:概率是::dp[i][j]=j/(i+j)∗(j−1)/(i+j−1)∗i/(i+j−2)∗dp[i−1][j−2];
4.先手拿到了黑鼠,后手拿到了也黑鼠,并且跑的是黑鼠:概率是:dp[i][j]=j/(i+j)∗(j−1)/(i+j+1)∗(j−2)/(i+j−2)∗dp[i][j−3];
然后就可以AC掉了;
#include <bits/stdc++.h>
using namespace std;
double f[1010][1010];
int main()
{
int w,b;
scanf("%d%d",&w,&b);
for(register int i=1;i<=w;i++){
f[i][0]=1;
for(register int j=1;j<=b;j++){
f[i][j]=(double)i/(double)(i+j);
}
}
for(register int i=1;i<=w;i++){
for(register int j=1;j<=b;j++){
if(j>=2) f[i][j]=f[i][j]+(double)(f[i-1][j-2]*1.0000*j*(j-1)*i/(i+j)/(j+i-1)/(i+j-2));
if(j>=3) f[i][j]=f[i][j]+(double)(f[i][j-3]*1.0000*j*(j-1)*(j-2)/(i+j)/(i+j-1)/(i+j-2));
}
}
printf("%.9lf",f[w][b]);
}
CF 148D Bag of mice 题解的更多相关文章
- CF 148D. Bag of mice (可能性DP)
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- CF 148D Bag of mice 概率dp 难度:0
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- CF 148D Bag of mice【概率DP】
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes Promblem descriptio ...
- codeforce 148D. Bag of mice[概率dp]
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- 【CF】148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题意:w个白b个黑,公主和龙轮流取,公主先取,等概率取到一个.当龙取完后,会等概率跳出一只.(0<= ...
- code forces 148D Bag of mice (概率DP)
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- Codeforces 148D Bag of mice:概率dp 记忆化搜索
题目链接:http://codeforces.com/problemset/problem/148/D 题意: 一个袋子中有w只白老鼠,b只黑老鼠. 公主和龙轮流从袋子里随机抓一只老鼠出来,不放回,公 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
- codeforces 148D Bag of mice(概率dp)
题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完 ...
随机推荐
- Centos系统下载
在学习或者工作当中,难免会用到不同版本的CentOS镜像,下面就简单的介绍一下如何正确并快速的下载所需要的CentOS镜像. 一.官网下载 官网地址:https://www.centos.org/此种 ...
- SpringMVC工作原理的介绍
1.用户向服务器发送请求,请求被Spring前端控制Servlet DispatcherServlet捕获 2.DispatcherServlet对请求URL进行解析,得到请求资源标识符(URL).然 ...
- Docker进阶-快速扩容
1.命令方式 在创建好的Swarm集群中运行nginx服务,并使用--replicas参数指定启动的副本数. docker service create --replicas 3 -p 80:80 - ...
- 软工第04组 Alpha冲刺(1/6)
队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 过去一段时间对项目的精度和分工进行了更加细致的划分,并初步进行了GamePlay逻辑部分的框架设计 GitHub签入记录: ...
- How to Fix Grub error: no such partition Grub Rescue
错误信息: error: no such partition Entering rescue mode... grub rescue> _ 错误原因: grub找不到文件normal.mod 解 ...
- 2、记录代码----Ajax
$.ajax({ url:'/content-engine/index.php/tracker/confirmSendEmail', async: false, //默认为true,同意异步传输 da ...
- D建立app项目(mui)
参考 http://dev.dcloud.net.cn/mui/getting-started/ 1.ios需要下载iTunes,确保手机能连上电脑 2.mui可参考手册 http://dev.dcl ...
- android 知识体系
- kindeditor 引用js架包问题
最近在搞kindeditor(富文本编辑器),遇到了很多插件修改无效的问题,仔细研究了一下才发现,别有洞天. 下面来介绍一下引用的js架包.具体有什么用. <!-- kindeditor.js ...
- 找出所有从根节点到叶子节点路径和等于n的路径并输出
//找出所有从根节点到叶子节点路径和等于n的路径并输出 Stack<Node> stack = new Stack<Node>(); public void findPath( ...