分治 3

这一篇主要是讲:点分治,也是树分治的一个入门?

点分治

解决一类路径相关问题,考虑点分治
点分治,其实叫分类讨论差不多?
树是一棵无根树,先随便钦定一个根节点
首先我们把所有路径划分成两类:
1.经过当前根节点
统计经过该节点路径的合法条数
2.不经过当前根节点
不管,因为以后会管到的

向下递归,一直递归到叶子
这个时候显然每一条路径都被考虑到了,并且没有重复对吧
所以正确性是有保证的

但是复杂度和递归深度有关啊?
考虑优化这个东西

首先引入树的重心
树的重心,指这个点为根时,
它每个儿子的子树大小不超过总大小的一半
相关结论:
每棵树至多有两个重心,并且此时两个重心用边直接相连

每次递归选取树的重心为根
(反正是无根树,哪个点当根都是一样的)
然后递归下去,总的递归深度是log级别

所以点分治框架本身的时间复杂度是O(nlogn)
考虑到数据结构等等可能在框架的基础上再多一只log
于是理论基础就讲完了

本来想写点分树的,时间有点紧,先不打了

posted @   2K22  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示