随笔分类 -  树上问题

摘要:点分治 点分治是一种用于维护树上路径问题的算法。 一个朴素的树上路径算法是 \(\mathit{O}(n^2)\) 的, 显然,我们只需要枚举所有点对即可。 点分治依赖于树的重心, 我们先来复习一下重心 重心的一种定义就是最大子树大小最小的节点。 很容易发现,重心的最大子树大小小于原树大小的一半, 阅读全文
posted @ 2024-12-13 19:15 Xie2Yue 阅读(25) 评论(0) 推荐(0)
摘要:动态DP \({\huge 动态DP}\)是一种 \(DP\) 优化 链上动态DP 例子 我们考虑一个 \(DP\) : 最大不连续子序列和 显然有转移方程: 定义: \(f_{i,0}\) 表示第 \(i\) 位不取的最大和, \(f_{i,1}\) 表示第 \(i\) 位取的最大和 \(\lef 阅读全文
posted @ 2024-11-27 22:44 Xie2Yue 阅读(22) 评论(0) 推荐(0)
摘要:\(MST\),最小生成树 对于一个无向图,每条边有边权,最小生成树即为生成树中边权最小的。 \(Kruskal\) 算法 用一个小根堆存储所有边,每次尝试加入堆顶的边。 时间复杂度 \(O(m\space\log m)\) 时间复杂度主要在排序上,可以使用并查集维护当前所有点组成的森林 \(Bor 阅读全文
posted @ 2024-07-22 10:07 Xie2Yue 阅读(28) 评论(0) 推荐(0)