博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[学习笔记]边分治
阅读量:6456 次
发布时间:2019-06-23

本文共 519 字,大约阅读时间需要 1 分钟。

基于边的一种分治。统计过中心边的所有路径

可以类比点分治学习

 

构造:

每次找中心边(使得两侧的sz的最大值最小),然后递归下去

菊花图会卡成链,构造变成O(n^2)。

 

其实复杂度和度数相关

考虑转化成二叉树

三度化

法一:把所有儿子依次加一个点串起来

 

法二:

 如果儿子多于2个,建立两个儿子虚点,把真正儿子奇偶分类给两个虚点

虚点放在n后面,最后会再处理到

 所以其实边分治的分治树上的点有4*n

本来n个点,rebuild变成2*n

而分治树除了叶子别的点都是边(类似于kruskal重构树),所以总共4*n个节点

性质:

二叉树

 

优劣:

优:1.二叉树儿子少,讨论减少了很多。复杂度基本严格logn

边分树儿子常数个(为2),每个点在这一层只有两种所属

边分树也是二叉树,为边分树合并提供条件

 

劣:2.虚点必须不影响答案

 

例题:

边分树使得每个点两个属性:

边分树是二叉树支持合并: 

 

动态边分治

和点分治一样

分治树上只有了2个儿子,处理儿子的贡献就很好办了

关键还是避免虚点虚边的影响了

 

把虚点设置为黑点。也就可以边分治做了

转载于:https://www.cnblogs.com/Miracevin/p/10430208.html

你可能感兴趣的文章
Redis详解
查看>>
论程序员加班的害处
查看>>
codeblocks快捷键
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
过滤DataTable表中的重复数据
查看>>
prepare for travel 旅行准备
查看>>
再次更新
查看>>
iOS开发代理(委托)模式详解
查看>>
微服务学习笔记二:Eureka服务注册发现
查看>>
C# 获取编码
查看>>
mysql的数据类型int、bigint、smallint 和 tinyint取值范围
查看>>
利用网易获取所有股票数据
查看>>
HDOJ5015 233 Matrix(矩阵乘法加速递推)
查看>>
移动铁通宽带上网设置教程
查看>>
java中判断字符串中是否有中文字符
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>
简单的导出表格和将表格下载到桌面上。
查看>>