概率dp,dp[i][j]为i个白兔和j个黑兔的时候,公主胜利的概率,公主第一次拿就拿到了白兔的概率为i/(i+j)
公主第一次拿到了黑兔,龙拿到了黑兔,跳出了一个黑兔,就到了dp[i][j-3],概率为:1.0 * j / (j+i) (j-1)/(i+j-1)(j-2)/(i+j-2)。
公主第一次拿到了黑兔,龙拿到了黑兔,跳出了一个白兔,就到了dp[i-1][j-2],概率为:1.0 * j / (i+j) (j-1)/(i+j-1)i/(i+j-2)。
double dp[2000][2000];
int main() {
int a,b;
scanf("%d%d",&a,&b);
for(int i = 1; i <= a; i++) dp[i][0] = 1;
for(int i = 1; i <= a; i++) {
for(int j = 1; j <= b; j++) {
dp[i][j] = 1.0 * i/(i+j);
if(j >= 2) dp[i][j] += 1.0 * j / (i+j) *(j-1)/(i+j-1)*i/(i+j-2)*dp[i-1][j-2];
if(j >= 3) dp[i][j] += 1.0 * j / (j+i) *(j-1)/(i+j-1)*(j-2)/(i+j-2)*dp[i][j-3];
}
}
printf("%.9lf",dp[a][b]);
return 0;
}