P4550 收集邮票

Aimee

讨厌之处在于要求花费

花费可以视为上次花费+1 和次数相等

先考虑次数

(f_i=frac{n-i}{n}*f_{i+1}+frac{i}{n}*f_i+1=f_{i+1}+frac{n}{n-i})

那么期望呢

(g_i=frac{i}{n}*(g_i+f_i+1)+frac{n-i}{n}*(g_{i+1}+f_{i+1}+1))

啥意思呢?当前花费为总花费(g)部分加上期望次数+1(本次花费)

化简一下

(g_i=frac{i}{n-i}*f_i+g_{i+1}+f_{i+1}+frac{n}{n-i})

开始运算

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
double n;
double Archie[1000001];
double Aimee[100001];
int main(){
	scanf("%lf",&n);
	for(int i=n-1;i>=0;--i){
		Archie[i]=Archie[i+1]+n/(n-i);
		Aimee[i]=i/(n-i)*(Archie[i]+1)+Archie[i+1]+Aimee[i+1]+1;
	}
	printf("%.2lf",Aimee[0]);
	return 0;
}	
原文地址:https://www.cnblogs.com/For-Miku/p/14358387.html