CF148D Bag of mice (期望dp)
# 解题思路
~~这怕是本蒟蒻第一个独立做出来的期望$dp$的题,发篇题解庆祝一下~~。首先,应该是能比较自然的想出状态设计$f[i][j][0/1]$ 表示当前还剩 $i$个白老鼠,$j$个黑老鼠,当前是$A/B$抓的概率。有个问题似乎因为当其中一个人抓到白老鼠时游戏就结束了,而在转移过程中比较难表示出来这个,但换状态的话比较难转移。所以要想一个办法,因为如果知道当前有$i$只白老鼠和$j$只黑老鼠的话,那么当前人获胜的概率可以$O(1)$的算出来,$p=\dfrac {i}{i+j}$。所以转移时只去转移那些抓黑老鼠的状态,而答案则在转移中更新就行了,具体转移和实现看代码。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std;
const int MAXN = ; int w,b;
double f[MAXN][MAXN][],ans; int main(){
cin>>w>>b;int n=w+b;
f[w][b][]=;if((w|b))ans=(double)w/n; //初值是还剩 w个白老鼠,b个黑老鼠,当前A取的概率是1。
for(int i=w;i>=;i--)
for(int j=b-(i==w);j>=;j--){
f[i][j][]=f[i+][j+][]*((double)(j+)/(i+j+))*((double)(i+)/(i+j+));
f[i][j][]+=f[i][j+][]*((double)(j+)/(i+j+))*((double)(j+)/(i+j+));
//f[i][j][0]可以从上一轮B拿走一只黑鼠扔掉一只黑鼠和拿走一只黑鼠和扔掉一只白鼠转移
//但绝对不能从拿走一只白鼠转移,因为这样游戏就结束了。
if((i|j)) ans+=f[i][j][]*((double)i/(i+j)); //每步加一次当前的答案。
f[i][j][]=f[i][j+][]*((double)(j+)/(i+j+));
//f[i][j][1]只能从上一轮A拿走一只黑鼠转移,因为拿走白鼠已经累计到答案里了
}
printf("%.9lf",ans);
return ;
}
CF148D Bag of mice (期望dp)的更多相关文章
- Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题
除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...
- CF148D. 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)
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- 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 ...
- 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 ...
- 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 ...
- codeforces 148D Bag of mice(概率dp)
题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完 ...
- Codeforces 148D Bag of mice 概率dp(水
题目链接:http://codeforces.com/problemset/problem/148/D 题意: 原来袋子里有w仅仅白鼠和b仅仅黑鼠 龙和王妃轮流从袋子里抓老鼠. 谁先抓到白色老师谁就赢 ...
随机推荐
- Unity 如何修改 particle system 的 start color 属性
代码如下: ParticleSystem ps = GetComponent<ParticleSystem>(); var main = ps.main; var color = Colo ...
- css中的zoom的作用
1.检查页面的标签是否闭合不要小看这条,也许折腾了你两天都没有解决的 CSS BUG 问题, 却仅仅源于这里.毕竟页面的模板一般都是由开发来嵌套的,而 他们很容易犯此类问题.快捷提示:可以用 Drea ...
- Python匹马行天下之初识python!
python的发展史 1989年,被称为龟叔的Guido在为ABC语言写插件时,产生了写一个简洁又实用的编程语言的想法,并开始着手编写.因为其喜欢Monty Python喜剧团,所以将其命名为pyth ...
- JDBC_数据库连接池c3p0
/** * @Description: TODO(这里用一句话描述这个类的作用) * @Author aikang * @Date 2019/8/26 20:12 */ /* 1.数据库连接池: 1. ...
- 2019-6-23-win10-uwp-开发-CSDN-访问量统计-源代码
title author date CreateTime categories win10 uwp 开发 CSDN 访问量统计 源代码 lindexi 2019-6-23 11:2:1 +0800 2 ...
- jboss未授权Getshell
一.jboss未授权访问Getshell 1.jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system:type=Server ...
- 多个for循环使用
for循环 例子 语法 vue.js的for循环 <div id="myfor"><li v-for="student in studentList&q ...
- Leetcode211. Add and Search Word - Data structure design 添加与搜索单词 - 数据结构设计
设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a- ...
- 【luoguP3868】猜数字
description 现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n ...
- scala 中List的简单使用
/** * scala 中List的使用 * */ object ListUse { def main(args: Array[String]): Unit = { def decorator(l:L ...