Bag of mice  CodeForces - 148D

The dragon and the princess are arguing about what to do on the New Year's Eve. The dragon suggests flying to the mountains to watch fairies dancing in the moonlight, while the princess thinks they should just go to bed early. They are desperate to come to an amicable agreement, so they decide to leave this up to chance.

They take turns drawing a mouse from a bag which initially contains w white and bblack mice. The person who is the first to draw a white mouse wins. After each mouse drawn by the dragon the rest of mice in the bag panic, and one of them jumps out of the bag itself (the princess draws her mice carefully and doesn't scare other mice).Princess draws first. What is the probability of the princess winning?

If there are no more mice in the bag and nobody has drawn a white mouse, the dragon wins. Mice which jump out of the bag themselves are not considered to be drawn (do not define the winner). Once a mouse has left the bag, it never returns to it. Every mouse is drawn from the bag with the same probability as every other one, and every mouse jumps out of the bag with the same probability as every other one.

Input

The only line of input data contains two integers w and b (0 ≤ w, b ≤ 1000).

Output

Output the probability of the princess winning. The answer is considered to be correct if its absolute or relative error does not exceed 10 - 9.

Example

Input
1 3
Output
0.500000000
Input
5 5

Output

0.658730159

题意: 公主和龙玩一个抓老鼠的游戏。袋子里,有两种老鼠,W只白老鼠,b只黑老鼠。一次抓出一只老鼠,公主先抓,龙后抓,龙抓出一只老鼠后,剩下的老鼠中会逃跑掉任意一只(跑掉的这只不算任何人抓的)。先抓到白老鼠的获胜(公主除抓到白老鼠获胜外,其余情况都算输),求公主获胜的概率。

题解:

思考: 对于 w 只白老鼠,b 只黑老鼠,公主要赢的情况
(一) 直接抓到一只白老鼠,概率为 p1 = w/(w+b)
(二) 抓到一只黑老鼠,但是龙也抓住一只黑老鼠,概率为
p2 = (1-p1)*(b-1)/(w+b-1) 然后跑掉一只老鼠,再分两种
跑掉一只白的 p3=w/(w+b-2) 变为 w-1 , b-2 的状态
跑掉一只黑的 p4=(b-2)/(w+b-2) 变为 w , b-3 的状态

dp[i][j] 代表 i 只白老鼠, j 只黑老鼠公主获胜的概率

dp[i][j]=p1 + p2*p3*dp[i-1][j-2] + p2*p3*dp[i][j-3];

 #include <iostream>
#include <stdio.h>
using namespace std;
#define MAXN 1005
double dp[MAXN][MAXN]; void Init()
{
for (int i=;i<MAXN;i++)
{
for (int j=;j<MAXN;j++)
{
double p1=,p2=;
if (i>=)
p1 = (i*1.0)/(i+j); //公主赢
if (j>=)
p2 = (-p1)*(j-1.0)/(i+j-); //龙抓黑 double p3 = ,p4 = ;
if (i>=&&j>=) p3 = (i*1.0)/(i+j-);
if (j>=) p4 =(j-2.0)/(i+j-); dp[i][j]= p1;
if (j>=) dp[i][j]+=p2*p3*dp[i-][j-];
if (j>=) dp[i][j]+=p2*p4*dp[i][j-];
}
}
} int main()
{
Init();
int w,b;
scanf("%d%d",&w,&b);
printf("%.12lf\n",dp[w][b]);
return ;
}

Bag of mice(概率DP)的更多相关文章

  1. Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题

    除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. codeforces 148D Bag of mice(概率dp)

    题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完 ...

  6. Codeforces 148D Bag of mice 概率dp(水

    题目链接:http://codeforces.com/problemset/problem/148/D 题意: 原来袋子里有w仅仅白鼠和b仅仅黑鼠 龙和王妃轮流从袋子里抓老鼠. 谁先抓到白色老师谁就赢 ...

  7. 抓老鼠 codeForce 148D - Bag of mice 概率DP

    设dp[i][j]为有白老鼠i只,黑老鼠j只时轮到公主取时,公主赢的概率. 那么当i = 0 时,为0 当j = 0时,为1 公主可直接取出白老鼠一只赢的概率为i/(i+j) 公主取出了黑老鼠,龙必然 ...

  8. Codeforces Round #105 D. Bag of mice 概率dp

    http://codeforces.com/contest/148/problem/D 题目意思是龙和公主轮流从袋子里抽老鼠.袋子里有白老师 W 仅仅.黑老师 D 仅仅.公主先抽,第一个抽出白老鼠的胜 ...

  9. codeforces105d Bag of mice ——概率DP

    Link: http://codeforces.com/problemset/problem/148/D Refer to: http://www.cnblogs.com/kuangbin/archi ...

随机推荐

  1. 代理Delegation

    package com.ctl.test; class Person { private int id; private String name; public int getId() { retur ...

  2. spring in action 4 (学习笔记1)

    1.spring两个核心性质 DI(依赖注入) AOP(面向切面编程) 2.bean的生命周期

  3. spring boot 缺点优点?

    作者:八面山人链接:https://www.zhihu.com/question/39483566/answer/246333825来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  4. Hadoop之Hive详解

    1.什么是Hive hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表 并提供类sql查询功能 2.为什么要用Hive 1.直接使用hadoop所面临的问题 人员学 ...

  5. CKEditor+SWFUpload实现功能较为强大的编辑器(三)---后台接收图片流程

    在前台配置完CKEditor和SWFUpload之后就可以满足基本的需求了 在这里,我配置的接收异步上传的图片的页面为upload.ashx 在这个ashx中对上传的图片处理的流程如下: contex ...

  6. Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_2

    在编写获取路径方法前,我们先把角色须要的动画文件载入进来,角色的文件为png 和 plist格式. player1_anim.png.plist             player1_anim.pn ...

  7. 转:深度学习斯坦福cs231n 课程笔记

    http://blog.csdn.net/dinosoft/article/details/51813615 前言 对于深度学习,新手我推荐先看UFLDL,不做assignment的话,一两个晚上就可 ...

  8. 15款Java程序员必备的开发工具

    如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能 ...

  9. Asp.net Mvc使用PagedList分页

    git:https://github.com/troygoode/PagedList 1. Nuget 安装package watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...

  10. python调度框架APScheduler使用详解

    # coding=utf-8 """ Demonstrates how to use the background scheduler to schedule a job ...