传送门:洛谷

题目大意:对于一个只有一个节点的二叉树,一次操作随机将这棵树的叶节点的下方增加两个节点。$n-1$次操作后变为$n$个叶节点的二叉树。求:(1)叶节点平均深度的期望值(2)树深度的数学期望值

数据范围:$2\leq n\leq 100$


首先看第(1)问

设$f_i$为$i$个叶节点的二叉树的叶节点平均深度的期望值。

每次选择一个叶节点,扩展出两个新的叶节点,所以总的深度增加$f_{i-1}+2$

则$f_i=\frac{(i-1)*f_{i-1}+f_{i-1}+2}{i}=f_{i-1}+\frac{2}{i}$

所以

$$Ans=\sum_{i=2}^n\frac{2}{i}$$


然后是第(2)问,这个难度要稍微大一点。

我们发现这求的是$n$个数的最大值的期望,而第(1)问的是和的期望,而期望可加,却不能$\max$,就非常不好办了。

这时我们就需要用一个式子

$$E[X]=\sum_{i=1}^{n-1}P(X\geq i)$$

然后就可以转化为其中一个数$\geq i$的概率。

就很容易想到$dp[i][j]$表示$i$个叶节点的二叉树中深度$\geq j$,则左子树深度$\geq j-1$或右子树深度$\geq j-1$

所以

$$dp[i][j]=\frac{\sum_{k=1}^{i-1}(dp[k][j-1]+dp[i-k][j-1]-dp[k][j-1]*dp[i-k][j-1])}{i-1}$$

$$Ans=\sum_{i=1}^{n-1}dp[n][i]$$

然后就做完了。

 1 #include<cstdio>
 2 #define Rint register int
 3 using namespace std;
 4 const int N = 103;
 5 int q, n;
 6 double dp[N][N], ans;
 7 int main(){
 8     scanf("%d%d", &q, &n);
 9     if(q == 1)
10         for(Rint i = 2;i <= n;i ++) ans += 2.0 / i;
11     else {
12         for(Rint i = 1;i <= n;i ++) dp[i][0] = 1;
13         for(Rint i = 2;i <= n;i ++){
14             for(Rint j = 1;j < n;j ++){
15                 for(Rint k = 1;k < i;k ++)
16                     dp[i][j] += dp[k][j - 1] + dp[i - k][j - 1] - dp[k][j - 1] * dp[i - k][j - 1];
17                 dp[i][j] /= i - 1;
18             }
19         }
20         for(Rint i = 1;i < n;i ++) ans += dp[n][i];
21     }
22     printf("%.6f", ans);
23 }

Luogu3830

转载于:https://www.cnblogs.com/AThousandMoons/p/10595583.html

luogu3830 [SHOI2012]随机树相关推荐

  1. Luogu P3830 [SHOI2012]随机树 | 期望 DP

    题目链接 第$1$问 设$g(i)$为当有$i$个叶节点时,树的叶节点的平均深度的期望值. 假如现在有$(i-1)$个叶节点,现在要等概率地展开一个叶节点,那么展开的那个叶节点的期望深度为$g(i-1 ...

  2. 为什么极度随机树比随机森林更随机?这个极度随机的特性有什么好处?在训练阶段、极度随机数比随机森林快还是慢?

    为什么极度随机树比随机森林更随机?这个极度随机的特性有什么好处?在训练阶段.极度随机数比随机森林快还是慢? ExtRa Trees是Extremely Randomized Trees的缩写,意思就是 ...

  3. 集成学习、Bagging算法、Bagging+Pasting、随机森林、极端随机树集成(Extra-trees)、特征重要度、包外评估

    集成学习.Bagging算法.Bagging+Pasting.随机森林.极端随机树集成(Extra-trees).特征重要度.包外评估 目录

  4. ML之回归预测:利用十类机器学习算法(线性回归、kNN、SVM、决策树、随机森林、极端随机树、SGD、提升树、LightGBM、XGBoost)对波士顿数据集回归预测(模型评估、推理并导到csv)

    ML之回归预测:利用十类机器学习算法(线性回归.kNN.SVM.决策树.随机森林.极端随机树.SGD.提升树.LightGBM.XGBoost)对波士顿数据集[13+1,506]回归预测(模型评估.推 ...

  5. 极度随机树ExtraTreesClassifier

    极度随机树ExtraTreesClassifier 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 极度随机树ExtraTre ...

  6. rrt算法流程图_RRT算法移动机器人路径规划(快速扩展随机树).pdf

    ( ) 第 34 卷 第 5期 南京理工大学学报 自然科学版 Vo l. 34 No. 5 20 10年 10 月 Journal of N anj ing Un iversity of Scienc ...

  7. 随机森林(randomForest)和极限树或者叫做极端随机树(extraTree),

    随机森林:是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定.,随机森林对回归的结果在内部是取得平均 但是并不是所有的回归都是取的平均,有些是取的和,以后会发博文来解释这样 ...

  8. 快速搜索随机树(RRT---Rapidly-exploring Random Trees)入门及在Matlab中演示

    转载:http://blog.csdn.net/gpeng832/article/details/71249198?locationNum=1&fps=1   快速搜索随机树(RRT -Rap ...

  9. 【运动规划】RRT快速搜索随机树 Rapidly Exploring Random Tree

    Randomized Kinodynamic Planning Steven M. LaValle James J. Kuffner, Jr. 1. Exploring the State Space ...

最新文章

  1. Keras入门(一)
  2. scanf———while(scanf (%lu,num) = =1)什么意思
  3. unity热更新json_Unity热更新之AssetBundle打包篇
  4. numpy.matrixlib.defmatrix.matrix写入csv文件
  5. Linux中W与Who命令的使用
  6. 程序员求职之道(《程序员面试笔试宝典》)之学业与求职,孰轻孰重?
  7. Hello Kubernetes快速交互实验手册
  8. 【git】如何在github上推送并部署自己的项目
  9. 比Redis快5倍的中间件,究竟为什么这么快?
  10. html5 新标签xss,HTML5 localStorageXSS漏洞
  11. 人工势场法--路径规划--原理--matlab代码
  12. mysql僵尸进程_僵尸进程产生原因和解决方法
  13. 中位数技巧(推理+证明)
  14. kali最高权限root
  15. 聚石塔RDS数据备份与迁移
  16. AI内容生成工具列表,可用于生成 AI 内容的工具列表。具有图像生成、文本生成等功能。
  17. Linux开关键盘背光灯
  18. android获取ro._Android 简单的设备信息获取
  19. Matlab(三)——图像处理实例:去除背景,提取指纹
  20. GStreamer基础教程02——GStreamer概念

热门文章

  1. 关于移动手机端富文本编辑器qeditor图片上传改造
  2. [转]opencv学习资料
  3. 在单文档中显示我的第一个对话框
  4. 替换字符串列表中字符串
  5. wpf中xps文档合并功能实现
  6. linux nexus 使用问题
  7. 在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure
  8. 用iptables实现G1手机cmwap代理上http网站[转]
  9. backtrader期权回测框架
  10. 场景应用题目常见面试真题详解