102 条题解
-
-2
using namespace std; const int N=1000; int n,s; double dp[N+5][N+5]; double dfs(int i,int j){ if(i==n&&j==s) return 0; if(dp[i][j]!=0) return dp[i][j]; dp[i][j]=1; if(i+1<=n) dp[i][j]+=dfs(i+1,j)*(n-i)*1.0*j/(n*s); if(j+1<=s) dp[i][j]+=dfs(i,j+1)*i*(s-j)/(1.0*n*s); if(i+1<=n&&j+1<=s) dp[i][j]+=dfs(i+1,j+1)*(n-i)*1.0*(s-j)/(n*s); dp[i][j]/=(1.0-i*j*1.0/(n*s)); return dp[i][j]; } int main(){ scanf("%d%d",&n,&s); printf("%.4lf\n",dfs(0,0)); return 0; }
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 843
- 已通过
- 300
- 上传者