标签:bugs printf algorithm problem == algo 收集 can cst
题目:http://poj.org/problem?id=2096
f[ i ][ j ] 表示收集了 i 个 n 的那个、 j 个 s 的那个的期望步数。
#include<cstdio> #include<cstring> #include<algorithm> #define db double using namespace std; const int N=1005; db n,s,f[N][N]; int main() { scanf("%lf%lf",&n,&s);db ml=n*s; for(int i=n;i>=0;i--) for(int j=s;j>=0;j--) { if(i==n&&j==s)continue; if(i<n)f[i][j]+=(n-i)*j/ml*f[i+1][j]; if(j<s)f[i][j]+=i*(s-j)/ml*f[i][j+1]; if(i<n&&j<s)f[i][j]+=(n-i)*(s-j)/ml*f[i+1][j+1]; f[i][j]+=1; f[i][j]*=ml/(ml-i*j); } printf("%.4f\n",f[0][0]); return 0; }
poj 2096 Collecting Bugs——期望DP
标签:bugs printf algorithm problem == algo 收集 can cst
原文地址:https://www.cnblogs.com/Narh/p/10278564.html