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 (树状数组,离线求区间元素种类数)