邮票手机问题:
有n种类型的邮票,问将所有的类型的邮票全部收集起来所要的收集次数期望是多少。
设dp[i]为已经收集了i种类型的票,还要收集n-i种的次数的期望。
dp[n]=0;
递推式:
dp[i]=dp[i+1]∗(n−i)/n+dp[i]∗i/n+1dp[i]=dp[i+1]∗(n−i)/n+dp[i]∗i/n+1
化简可得
dp[i]=dp[i+1]+n/(n−i)dp[i]=dp[i+1]+n/(n−i)
dp[0]=n(1/n+1/(n−1)+...+1/1)
lightoj1342
首先考虑没有粗糙棍的情况
那就是sum{棍子的重量*取棍子期望}
现在多了粗糙棍,这些棍只取一次即可,那么这些棍的取棍子期望设为1即可
for(int i=1; i<maxn; i++) H[i] = H[i-1] + 1.0/i; int T; scanf("%d", &T); for(int ck=1; ck<=T; ck++) { scanf("%d", &N); DBL ans=0; for(int i=1,w,t; i<=N; i++) { scanf("%d%d", &w, &t); if(t==1) ans += w; else ans += H[N]*w; } printf("Case %d: %.5f\n", ck, ans); }