其他分享
首页 > 其他分享> > CF148D Bag of mice

CF148D Bag of mice

作者:互联网

题目链接:https://www.luogu.com.cn/problem/CF148D

思路:概率dp   概率顺推 期望逆推   dp[i][j] 表示有i只白鼠 j只黑鼠 A的获胜概率

每次的状态是 A直接拿到白鼠   A拿到黑鼠 B拿到黑鼠 跑了一只黑鼠    A拿到黑鼠 B拿到黑鼠 跑了一只白鼠三种状态

和期望dp类似 也是通过转移上一次的状态 乘上概率得到答案

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1e3+10;
 4 #define ll long long
 5 #define pb push_back
 6 double dp[maxn][maxn];
 7 
 8 
 9 int main()
10 {
11   ios::sync_with_stdio(0);
12   cin.tie(0);
13   int w,b;
14   cin>>w>>b;
15   for(int i=1;i<=w;i++)
16     dp[i][0]=1.0;
17   for(int i=1;i<=w;i++)
18   {
19     for(int j=1;j<=b;j++)
20     {
21         dp[i][j]=1.0*i/(i+j);
22       if(j>=2)
23         dp[i][j]+=1.0*j/(i+j)*(j-1)/(i+j-1)*i/(i+j-2)*dp[i-1][j-2];
24       if(j>=3)
25         dp[i][j]+=1.0*j/(i+j)*(j-1)/(i+j-1)*(j-2)/(i+j-2)*dp[i][j-3];
26     }
27   }
28   cout<<fixed<<setprecision(9)<<dp[w][b]<<'\n';
29 
30 
31 }
View Code

 

标签:黑鼠,int,CF148D,拿到,Bag,maxn,白鼠,mice,dp
来源: https://www.cnblogs.com/winfor/p/14047984.html