zoukankan      html  css  js  c++  java
  • CF 148d Bag of mice 概率DP 好题

              D. Bag of mice
     
     
     

    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 b black 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.

    Sample test(s)
    input
    1 3
    output
    0.500000000
    input
    5 5
    output
    0.658730159
    Note

    Let's go through the first sample. The probability of the princess drawing a white mouse on her first turn and winning right away is 1/4. The probability of the dragon drawing a black mouse and not winning on his first turn is 3/4 * 2/3 = 1/2. After this there are two mice left in the bag — one black and one white; one of them jumps out, and the other is drawn by the princess on her second turn. If the princess' mouse is white, she wins (probability is 1/2 * 1/2 = 1/4), otherwise nobody gets the white mouse, so according to the rule the dragon wins.

    题意:

    国王和公主在做一个游戏,

    有一个袋子,刚开始的时候里面装有w只白色的老鼠,b只黑色的老鼠。

    现在2个人轮流从袋子里面抓老鼠,规则:

    1.公主先手

    2.先抓到白色老鼠的赢

    3.公主抓的时候比较温柔,而国王比较暴力,所以每次国王抓后,都会有一只老鼠受到惊吓而逃出来

    4.出来的老鼠不会再回去

    5.若直到最后,2个人都没有抓到白老鼠,算国王赢

    6.由于看不见袋子,每只老鼠被抓的概率相同

    思路:

    状态(i,j)表示袋子里面有i只白老鼠,j只黑老鼠的状态

    dp[i][j]表示公主可以面对(i,j)这个局面的概率

    由于公主 先手,则公主一定会面对(w,b)这个局面,初始化:dp[w][b]=1.0,其余为0.0

    (也说明了公主不可能面对(w,b-1),(w-1,b)这些局面)

    对于一个局面(i,j),不等于(w,b),公主可以面对这个局面的条件:

    1.在局面(w+1,b+2)时,公主抓到的是b,然后轮到国王时,国王抓到的是b,吓跑的是w

    2.在局面(w,b+3)时,公主抓到的是b,然后轮到国王时,国王抓到的是b,吓跑的也是b

    则可以得到状态转移方程了

    然后,对于公主面对的每一个局面的概率是dp[i][j],在这个局面赢的概率是i/(i+j)

    累加所有局面公主赢的概率,即为答案。

     1 #include<cstdio>
     2 #include<cstring>
     3 
     4 const int maxn=1010;
     5 
     6 double dp[maxn][maxn];
     7 
     8 int main()
     9 {
    10     int w,b;
    11     scanf("%d%d",&w,&b);
    12     memset(dp,0,sizeof dp);
    13 
    14     dp[w][b]=1.0;
    15     for(int i=w;i>=0;i--)
    16     {
    17         for(int j=b;j>=0;j--)
    18         {
    19             if(i==w&&j==b)
    20                 continue;
    21             dp[i][j]=dp[i+1][j+2]*(j+2)/(i+j+3)*(j+1)/(i+j+2)*(i+1)/(i+j+1)
    22             +dp[i][j+3]*(j+3)/(i+j+3)*(j+2)/(i+j+2)*(j+1)/(i+j+1);
    23         }
    24     }
    25     double ans=0.0;
    26     for(int i=0;i<=w;i++)
    27     {
    28         for(int j=0;j<=b;j++)
    29         {
    30             if(i==0&&j==0)
    31                 continue;
    32             ans+=dp[i][j]*i/(i+j);
    33         }
    34     }
    35     printf("%.9f
    ",ans);
    36 
    37     return 0;
    38 }
    View Code

     

  • 相关阅读:
    数学形态学——腐蚀、膨胀、开、闭、细化
    VS2010中 报错:error C2146、error C4430 原因一:缺少CvvImage类
    帧同步和状态同步
    HTML5触摸事件演化tap事件
    screenX clientX pageX的区别
    phaser的小游戏的onInputDown问题
    phaser入手
    pixi.js 微信小游戏 入手
    正则表达式
    剖析Vue原理&实现双向绑定MVVM-2
  • 原文地址:https://www.cnblogs.com/-maybe/p/4681527.html
Copyright © 2011-2022 走看看