期望DP
f[i][j]表示i张红牌,j张黑牌
从 f[i-1][j],f[i][j-1],0 转移过来,注意下界为0要判,因为取成负数肯定不优
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 5005
using namespace std;
double f[2][N];
int main()
{
int n, m, cur=0;
scanf("%d%d",&n,&m);
for(int i = 1; i <= n; i++,cur^=1)
{
f[cur][0]=i;
for(int j = 1; j <= m; j++)
f[cur][j]=max(0.0 , 1.0*i/(i+j)*(f[cur^1][j]+1) + 1.0*j/(i+j)*(f[cur][j-1]-1));
}
printf("%lf\n",f[cur^1][m]-0.0000005);
}