点分治学习笔记
算法很简单,就是每次找重心,然后dfs一遍子树,求出跨越u的路径答案,然后继续。因为每次子树大小会减少一半,所以时间是有保障的。
主要用于树上的路径的问题。这些问题与树的形态无关,只与每两个点之间的路径长度有关。只要你两个点之间路径长度都是一样的,那么答案也就一样
点分治
求是否有路径=k
直接枚举路径,然后树状数组即可
求有多少路径<=k
直接枚举路径,然后树状数组即可
求有多少路径%3=0
直接枚举路径,然后开个桶统计即可
求有多少路径=k且边数最少
直接枚举路径,然后二分即可,前面要去重
点分树
比较难写而且难想的算法
点分树主要用于树上的路径的问题,并且带修和查询,同时是单点查和单点修
我们将找重心的过程重心之间连边,那么这就变成了一颗平衡树,那么我们在查询信息时只要不停往父亲跳,然后计算跨越节点的答案就可以了。记得容斥一下。这就是查询
修改还没学。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现