标签:net nbsp math 表示 clu lightoj 假设 names pac
掷出有n面的色子的全部面,求他的期望。
分析:
期望dp,假设掷出i面,dp[i]表示掷出i面的期望。每次会掷出2种情况:1.掷出不同的面,转移到i+1面,概率为(n-i)/n。2.掷出相同的,状态还是i面,概率为i/n。
且花费为1(每次要投一次)。dp方程:dp[i]=( dp[i+1]+1 ) * (n-i)/n+( dp[i]+1 ) *i/n,化简为dp[i]=dp[i+1]+1+i/(n-i)。(期望dp要逆推)
代码:
#include <cstdio> #include <algorithm> #include <iostream> #include <cstring> #include <vector> #include <cmath> using namespace std; typedef long long ll; const int maxn=1e5+6; double dp[maxn]; int main() { int T,n; cin>>T; for(int j=1;j<=T;j++) { cin>>n; dp[n]=0; for(int i=n-1;i>=0;i--) { dp[i]=dp[i+1]+1+i*1.0/(n-i); } printf("Case %d: %.7f\n",j,dp[0]); } return 0; }
标签:net nbsp math 表示 clu lightoj 假设 names pac
原文地址:https://www.cnblogs.com/studyshare777/p/12425045.html