分治 3
这一篇主要是讲:点分治,也是树分治的一个入门?
点分治
解决一类路径相关问题,考虑点分治
点分治,其实叫分类讨论差不多?
树是一棵无根树,先随便钦定一个根节点
首先我们把所有路径划分成两类:
1.经过当前根节点
统计经过该节点路径的合法条数
2.不经过当前根节点
不管,因为以后会管到的
向下递归,一直递归到叶子
这个时候显然每一条路径都被考虑到了,并且没有重复对吧
所以正确性是有保证的
但是复杂度和递归深度有关啊?
考虑优化这个东西
首先引入树的重心
树的重心,指这个点为根时,
它每个儿子的子树大小不超过总大小的一半
相关结论:
每棵树至多有两个重心,并且此时两个重心用边直接相连
每次递归选取树的重心为根
(反正是无根树,哪个点当根都是一样的)
然后递归下去,总的递归深度是
所以点分治框架本身的时间复杂度是
考虑到数据结构等等可能在框架的基础上再多一只
于是理论基础就讲完了
本来想写点分树的,时间有点紧,先不打了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具