POJChallengeRound2 Tree 数学期望

Posted menhera

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJChallengeRound2 Tree 数学期望相关的知识,希望对你有一定的参考价值。

题目分析:

我们令$G(x)$表示前$x$个点的平均深度,$F(x)$表示第$x$个点的期望深度。

有$F(x) = G(x-1)+1$,$G(x) = G(x-1)+frac{1}{x}$

所以答案相当于一个调和级数和的前缀和,我们对小于1e6的暴力处理,大于1e6的利用欧拉常数做。

 

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const double euler = 0.57721566490153286060651209;
 5 
 6 long long n;
 7 
 8 int main(){
 9     while(scanf("%lld",&n) == 1){
10     if(n <= 1e6){
11         double ans = 0;
12         for(int i=1;i<=n;i++) ans += (double)(n-i+1)/(double)i;
13         ans /= n;
14         printf("%.10lf
",ans);
15     }else{
16         double hh = log(n)+euler;
17         hh = hh*(n+1)-n;
18         hh /= n;
19         printf("%.10lf
",hh);
20     }
21     }
22     return 0;
23 }

 

以上是关于POJChallengeRound2 Tree 数学期望的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 461B. Appleman and Tree[树形DP 方案数]

Turing Tree HDU - 3333 (树状数组,离线求区间元素种类数)

Xor Tree CodeForces

maximum-depth-of-binary-tree——找出数的最大深度

dojo组件使用---tree组件的局部更新

[LeetCode] Find Mode in Binary Search Tree 找二分搜索数的众数