SP1026 FAVDICE - Favorite Dice

Posted grcyh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SP1026 FAVDICE - Favorite Dice相关的知识,希望对你有一定的参考价值。

题目描述

一个\(n(n \leq 1000)\)面的骰子,求期望掷几次能使得每一面都被掷到。

输入输出样例

输入样例#1:

2
1
12

输出样例#1:

1.00
37.24

思路:期望\(dp\)中典型的赠券收集问题,用f[i]表示还剩i个面没有掷到,那么掷到之前没有掷到过的面的概率为\((n-i)/n\),然后次数的期望值就是概率分之一,然后进行逆向\(dp\)即可。

代码:

#include<cstdio>
#define dl double
dl f[1007];
int n,t;
int main() {
  scanf("%d",&t);
  while(t--) {
    scanf("%d",&n);
    f[n]=0;
    for(int i=n-1;i>=0;--i) 
      f[i]=f[i+1]+(n/(n-(double)i));
    printf("%0.2lf\n",f[0]);
  }
  return 0;
}

以上是关于SP1026 FAVDICE - Favorite Dice的主要内容,如果未能解决你的问题,请参考以下文章

spoj1026Favorite Dice

spoj1026Favorite Dice

题解:SPOJ1026 Favorite Dice

概率与期望

SPOJ - FAVDICE 简单期望

目标 C:获取 MPMediaItem 'Favorite' 属性