0阶段-第二题-生成树与LCA
2021/7/1 6:22:21
本文主要是介绍0阶段-第二题-生成树与LCA,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
缓缓加速
第二日,生成树与LCA
从上至下知识点对应为:
1-3、最小生成树(MST),prim或kruskal算法
4、求多颗最小生成树(或许这么称呼不太严谨),kruskal算法
5、最大瓶颈生成树(MBST),prim或kruskal算法
6、LCA,树上倍增
7、最大生成树+LCA,树上倍增+Kruskal重构树
一些新内容,整理一下:
1、prim与kruscal算法
prim算法一般不常用,个人认为没有什么明显的性质。不过可能在某些暴力方法中有些用途。
Kruscal:设有n个节点,kruscal算法开始时可看作有n棵最小生成树,每加一条边减少一颗最小生成树(因为一条边会把两颗树合并为一颗最小生成树),如果题意要求把原图划分为k个代价最小的连通子图,那么这一利用这一个性质。没有证明。
如果稠密图kruscal超时(eloge)。可以考虑朴素的prim(n²)
2、瓶颈生成树
最大瓶颈生成树为树上边权最小值最大的树,最小瓶颈树为书上边权最大值最小的生成树。 最小生成树一定是最小瓶颈树。 最大生成树一定是最大瓶颈树(猜测)。 反之不成立。
3、树上倍增
利用倍增思想。求LCA时,其中关键为fa[x][i],表示节点x的第2^i的祖先。这样通过预处理fa,可以把单次朴素查询LCA的O(n)复杂度,优化到O(logN),N时数据范围的上限。 相关利用倍增思想的还有ST表,两者很相似。
4、kruscal重构树与瓶颈路径
两点间(x,y):
最小瓶颈路径:连通x、y两点所有路径的最大边权的最小值。
最大瓶颈路径:连通x、y两点所有路径的最小边权的最大值。
kruscal重构树:利用kruscal算法合并的一颗与生成树不用的树,其中要把边拆点,点权值为所拆边权值,按照并查集合并的树形加边。
重构最小生成树,那么LCA(x,y)的点权值为最小瓶颈路径。
重构最大生成树,那么LCA(x,y)的点权值为最大瓶颈路径。
瓶颈路径可以用floyd,但是时间复杂度为O(n的立方),显然超时。
学习参考地址https://www.cnblogs.com/ww3113306/p/9746449.html
这篇关于0阶段-第二题-生成树与LCA的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南