题目大意:给出一个n面的色子,问看到每个面的投掷次数期望是多少
解题思路:水题啊,竟然被卡了那么久,也是醉了,给题目所给的那个样例误导了。。。不怪那个 怪自己太弱了,还得继续训练啊。。。
设dp[i]表示扔到i个不同面的期望,那么
dp[i + 1] = i / n * dp[i + 1] + (n - i) / n * dp[i] + 1
整理得
dp[i + 1] = n / (n - i) + dp[i] + 1
#include<cstdio>
#define maxn 100010
double f[maxn];
int main() {
int test,n, cas = 1;
scanf("%d", &test);
while(test--) {
scanf("%d", &n);
f[0] = 0;
for(int i = 0; i < n; i++)
f[i + 1] = f[i] + (1.0 * n / (n - i));
printf("Case %d: %.7lf\n", cas++, f[n]);
}
return 0;
}
时间: 2024-10-10 01:24:41