(动态规划、概率)BJTUOJ #1885 膜法师 lanpang 的树学期望

原题链接1885 - 膜法师 lanpang 的树学期望 - acm.bjtu

简单的dp题,根据原文描述,新增的节点会与原先的树中随机一个节点连接,若n个节点时数学期望为x,n+1个节点时,选择原先树上的随机两点的概率为\left ( \frac{n}{n+1} \right )^{2},平均经过的节点数仍为x,一个点选择新加入的点,另一个点选择原先树上的点的概率为\frac{2n}{\left ( n+1 \right )^{2}},由于新节点接在随机一个原节点上,平均经过的节点数为x+1,两个点都选择新加入的点的概率为\frac{1}{\left ( n+1 \right )^{2}},经过的节点数为1

算法复杂度为o(n)

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
	double dp[200000];
	dp[0]=1;
	int i=1;
	while(i<200000)
	{
		dp[i]=((double)i*(double)i*dp[i-1]+2*(double)i*(dp[i-1]+1)+1)/(double)(i+1)/(double)(i+1);
		i++;
	}
	int n,x;
	scanf("%d",&n);
	i=0;
	while(i<n)
	{
		scanf("%d",&x);
		printf("%lf\n",dp[x-1]);
		i++;
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值