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 水题
除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...
- Codeforces Round #105 (Div. 2) D. Bag of mice 概率dp
题目链接: http://codeforces.com/problemset/problem/148/D D. Bag of mice time limit per test2 secondsmemo ...
- codeforces 148D Bag of mice(概率dp)
题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完 ...
- Bag of mice(概率DP)
Bag of mice CodeForces - 148D The dragon and the princess are arguing about what to do on the New Y ...
- 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 概率dp 难度:0
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Codeforces 148D Bag of mice 概率dp(水
题目链接:http://codeforces.com/problemset/problem/148/D 题意: 原来袋子里有w仅仅白鼠和b仅仅黑鼠 龙和王妃轮流从袋子里抓老鼠. 谁先抓到白色老师谁就赢 ...
- codeforces105d Bag of mice ——概率DP
Link: http://codeforces.com/problemset/problem/148/D Refer to: http://www.cnblogs.com/kuangbin/archi ...
- Educational Codeforces Round 13 E. Another Sith Tournament 概率dp+状压
题目链接: 题目 E. Another Sith Tournament time limit per test2.5 seconds memory limit per test256 megabyte ...
随机推荐
- VMware Workstation虚拟机进入BIOS
1.<F2>键 2.
- 安卓架构 视频 Android 插件化架构设计
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha Android 插件化架构设计-Dream老师 自定义SDK =====
- 【BFS】【并查集】【Tarjan】【LCA】Gym - 101173H - Hangar Hurdles
给你一张地图,给你q次询问,每次问你从A点到B点,最大能移动多大的箱子. 把每个点所能容纳的最大箱子求出来(BFS,八连通,一开始将所有边界点和障碍点入队).然后从大到小排序.然后用并查集将相邻(四联 ...
- 浅谈分布式CAP定理
互联网发展到现在,由于数据量大.操作并发高等问题,大部分网站项目都采用分布式的架构.而分布式系统最大的特点数据分散,在不同网络节点在某些时刻(数据未同步完,数据丢失),数据会不一致. 在2000年,E ...
- idea创建多个Module
练习不同的算法时,如果不断的创建工程未免过于麻烦,可以使用在一个工程下创建多个Module的方式,编写多种不同的算法,这些模块互相独立,都有一个入口函数(main),并且,对于创建好的Module,如 ...
- zabbix3.0的安装
Lamp环境搭建: #zabbix的版本,3.0之后的要求php版本5.4以上才支持 mysql需要对大小写敏感 编译安装PHP 下载 :wget http://mirrors.sohu.com/p ...
- awk算术运算一例:统计hdfs上某段时间内的文件大小
计算hdfs指定目录中所有文件名中包含2011-04-24的文件大小,并换算成GB: $HADOOP_HOME/bin/hadoop fs -du /user/hdfs/s3/ifocus/*201 ...
- enum don't allocate any memory
int main() { _asm{ mov edi,edi mov edi,edi } ,Green,Yellow}; _asm{ mov edi,edi mov edi,edi } Color c ...
- ubuntu系统使用dnw下载程序
转:http://blog.chinaunix.net/uid-22030783-id-3350840.html 获得dnw4linux.tar.bz2 源码包,可在xcembed论坛下载:http: ...
- Express优化-合并路由
原app.js var express = require('express'); var app = express(); /*start*/ app.get('/',function(req,re ...