记:f[n]为上式产生的节点数为n的树的深度期望;
g[n]为上式产生的节点数为n的不同形态的树的个数.
那么:
- f[n] = ∑n所有形态(∑ndep[v]所有节点深度)/(n*g[n]);
- 则f[n+1] = ∑n所有形态(n*∑ndep[v]所有节点深度+∑ndep[v]所有节点深度+n)/[(n+1)*g[n+1]];
- 且 g[n+1] = g[n]*n;
- 化简得 f[n+1] = f[n]+1/(n+1);
- 于是 ans =(f[1]+...f[n])/n;
- 再化简:
- ans = (1/1+1/2+1/3+...+1/n)*(n+1)/n-1;
于是关键怎么求1/1+1/2+1/3+...+1/n;
- 想用级数来着,结果想不起来,愧对数分老师~~
- 没办法用了积累的高中的一点东东:
- x/(1-x)>x>ln(1+x); x->0时近似相等
- 此处若取x=1/n,有: 1/n>ln(1+1/n)=ln[(n+1)/n];
- 同理取x=-1/n,可有:1/n<ln[1+1/(n-1)];
- 于是k足够大时,1/1+1/2+...1/k直接计算,
- 剩余部分用近似公式计算即可。
高中学的那点东西还真有用。