#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
double dp[2005][25];
using namespace std;
const int INF=0x3f3f3f;
void init()
{
for(int i=1;i<=2000;i++)
for(int j=0;j<=15;j++)
dp[i][j]=INF;
for(int i=0;i<=15;i++)
dp[0][i]=0;
for(int i=1;i<=2000;i++)
for(int j=1;j<=15;j++)
for(int k=1;k<=i;k++)
dp[i][j]=min(dp[i][j],(i-k+1)*1.0/(i+1)*dp[i-k][j]+k*1.0/(i+1)*dp[k-1][j-1]+1);
}
int main()
{
int k,w;
init();
while(scanf("%d%d",&k,&w)!=EOF)
printf("%.6f\n",dp[k][min(w,15)]);
return 0;
}
hdu 5781 2016 Multi-University Training Contest 5(期望dp)
最新推荐文章于 2020-08-02 20:54:41 发布