题意:拿到white赢
princess 先拿
dragon拿了后会 随机会减少一个,相对于第三个人拿,但是不算输赢
四种情况:
1. princess 拿到 white (win
2. dragon 拿到 white (lost
3. princess 拿到 black dragon 拿到 black 第三人 拿到 black
4. princess 拿到black dragon 拿到 black 第三人 拿到 white
边界
whitenum<=0||blacknum<=0
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<iostream>
#define Maxn 100010
#define Inf 0x7FFFFFFF
using namespace std;
double dp[1200][1200];
double dfs(int w,int b)
{
if(w<=0) return 0;
if(b<=0) return 1;
if(dp[w][b]!=-1)
return dp[w][b];
double ans=0;
ans+=w*1.0/(w+b);
if(b>=3)
ans+=dfs(w,b-3)*b/(w+b)*(b-1)/(w+b-1)*(b-2)/(w+b-2);
if(b>=2)
ans+=dfs(w-1,b-2)*b/(w+b)*(b-1)/(w+b-1)*(w)/(w+b-2);
return dp[w][b]=ans;
}
int main()
{
int w,b;
while(cin>>w>>b)
{
for(int i=0;i<=w;i++)
for(int j=0;j<=b;j++) dp[i][j]=-1;
printf("%.9lf\n",dfs(w,b));
}
return 0;
}