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