为什么转移方程和别人不不同,还是过了?
查看原帖
为什么转移方程和别人不不同,还是过了?
213535
Bluebird_楼主2022/8/15 14:25
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
double n,dp[N],f[N];
int main()
{
	cin>>n;
	for(double i=n-1;i>=0;i--)
	{
		dp[(int)i]=dp[(int)i+1]*(1.0-i/n)+1;//期望次数 
		dp[(int)i]/=(1.0-i/n);		
	}	
	//printf("%.2f\n",dp[0]);
	for(double i=n-1;i>=0;i--)
	{
//		cout<<dp[(int)i]<<" "<<dp[0]-dp[(int)i+1]<<endl;
		f[(int)i]=f[(int)i+1]*(1.0-i/n)+dp[(int)i];//把dp[(int)i]改为dp[0]-dp[(int)i+1]也可以通过 
		f[(int)i]/=(1.0-i/n);		
	}
	printf("%.2f\n",f[0]);
	return 0;
}
2022/8/15 14:25
加载中...