ZOJ 3551 Bloodsucker 概率DP

做法:条件期望的做法

一开始有一只吸血鬼。

明明就是水,竟然错了那么久...

dp[i]=dp[i+1]+1/px px 是新增一只吸血鬼的概率

#include<cstdio>
#include<cstring>
#define LL long long
const int LMT=100005;
double p,dp[LMT];
int n;
void init(void)
{
	memset(dp,0,sizeof(dp));
}
int main(void)
{
	int i,T;
	double yes;
	LL all;
	scanf("%d",&T);
	while(T--)
	{
	    init();
		scanf("%d%lf",&n,&p);
		all=(double)n*(n-1)/2;
		for(i=n-1;i>0;i--)
		{
			yes=(double)i*(n-i)*p/all;
			dp[i]=dp[i+1]+1/yes;
		}
		printf("%.3lf\n",dp[1]);
	}
	return 0;
}




 

你可能感兴趣的:(ZOJ 3551 Bloodsucker 概率DP)