参考题解地址

1. 从树上任意一个节点开始,跳到其随机一个后代,跳到叶子的期望次数为 \(H_{siz_u}=\ln(siz_u)\)。

证明:

首先考虑一条链的情况。设在第 \(i\) 个点期望次数为 \(a_u\),\(\{a\}\) 的前缀和为 \(\{S\}\),那么就有 \(a_u=1+\frac{S_{u-1}}{u-1}\)。

\[a_u=1+\frac{S_{u-1}}{u-1}\\
(u-1)a_u=u-1+S_{u-1}\\
ua_{u+1}=u+S_u\\
ua_{u+1}-(u-1)a_u=a_u+1\\
a_{u+1}=a_u+\frac 1 u\\
a_u=H_{u-1}
\]

(注意调和级数的 \(\ln\) 不带常数)

对于非链的树,随便挑一个叉出去的子树接到一个叶子下面,显然每个节点的期望步数增加,总步数增加。于是链是最坏的情况,证毕。

2. 对于任意一棵树,可以将其划分成 \(O(\log)\) 层叶链,每层叶链定义为剥出叶子及其向上跳最远使得沿途节点只有一个儿子的链。

证明:

设 \(T(u)\) 为节点 \(u\) 被删的时间,则若 \(u\) 的儿子 \(v\) 中 \(T(v)\) 最大值唯一,则 \(T(u)=T(v)\),否则 \(T(u)=T(v)+1\)。

不难归纳证明使得 \(T(u)\ge k\) 时 \(siz_u\ge 2^k-1\),证毕。

3. 对于一棵树的任意一种点分形式(不一定选重心),记一次分治的代价为分出的所有非最大子树的 \(siz\) 之和,则总代价为 \(O(n\log n)\)。

证明:

考虑每个点的贡献,每当它对代价产生贡献时 \(siz\) 一定翻倍,于是显然贡献之和为 \(O(n\log n)\)。

最新文章

  1. php实现设计模式之 职责链模式
  2. 小记:目标数组的长度不够。请检查 destIndex 和长度以及数组的下限。
  3. php 对url 操作类:url拼接、get获取页面、post获取页面(带传参)
  4. 批量修改vss工作目录
  5. NoSuchMethodException问题总结
  6. HTML标记语法之图片Img元素
  7. CentOS6.4 安装 erlang
  8. ADO.NET 实体类和数据访问类
  9. PHP手册总结《预定义变量》
  10. 对LR analysis的平均事务响应时间和summary中时间值不同的解释
  11. java.lang.Exception: Socket bind failed 服务器端口冲突-->修改端口
  12. spring中解析xml
  13. ssh配置事务
  14. [HMLY]9.深入浅出-iOS Reactive Cocoa的常见用法
  15. 报表平台对CRM系统价值几何
  16. slitaz的root密码
  17. 网络抓包教程之tcpdump
  18. JWT学习小结
  19. net::ERR_CONNECTION_RESET 问题排查
  20. 线程(四)之Queue

热门文章

  1. calico和flannel的优缺点
  2. Java 编码那些事(一)
  3. spring框架-jdbcTemplate
  4. Scrapy 如何传递 get请求的params
  5. python中的浅拷贝,深拷贝
  6. ThreadLocal的介绍与运用
  7. [Polkadot] 波卡链学习笔记
  8. Day20.1:关于this、super的解析
  9. 解决windows installation failed! Error: 无法访问 Windows Installer 服务
  10. Kettle:跨库(SQLServer->PostgreSQL)同步多张表数据的详细设计过程