【题解】red is good
// 设f[i][j]表示有i张红牌,j张黑牌的最优策略的期望。
#include<bits/stdc++.h>
using namespace std;
long long r,b;
double f[5001][5001];
int main(){
scanf("%lld%lld",&r,&b);
f[1][0]=1;
f[0][1]=0;
for(long long i=1;i<=r;i++){
f[i][0]=i;
for(long long j=1;j<=b;j++){
f[i][j]=max(0.0,(double)(f[i-1][j]+1)*(double)(i/(double)(i+j))+(double)(f[i][j-1]-1)*(double)(j/(double)(i+j)));
//f[i-1][j]*(i/i+j)表示当前这一张为r
//f[i][j-1]*(j/i+j)表示当前这一张为b
}
}
double ans=f[r][b];
ans*=1000000;
ans=(long long)ans;
printf("%lf",ans/1000000);
}
作者:zswagnziye
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!