树上深度和问题 - 换根DP
1|0问题引出:
给出
首先我们有个自然的暴力思路, 也就是以每个节点为根节点做一遍
看下图:
我们首先假设每个节点具有点权, 明显这里的点权是
- 定义
为点权, 这里为 - 定义
为所有点权的和 - 定义
为以 为根的子树内的点权和
假设我们此时以及求出了 号节点的答案 , 那么当我们要求 号节点时, 我们把这个树分成两部分, 很明显黄框框出的部分内部的所有的节点到根节点的距离都要增加一个 , 这里明显边权为 , 那么其答案应该增加 , 接着看红框部分, 明显的所有的节点距离根节点的都要减去边权, 所以答案还应该减去 , 故 , 同理可以递推出其它的节点, 时间复杂度为
代码:
2|0变形题目
2|11. Minimize Sum of Distances
Minimize Sum of Distances
此时的点权就要变了, 但是其目的还是一样的, 按照我们的模板改一下点权就可以了, 此题还可以用重心来做, 直接求出重心也是可以的
重心代码
换根 dp 代码
下面的题只需要改改边权改改点权就可以了
2|22.[USACO10MAR] Great Cow Gathering G
[USACO10MAR] Great Cow Gathering G
2|33.Distance Sums 2
2|44.Tree with Maximum Cost
2|55.[POI2008] STA-Station
2|66.Tree Painting
2|77.「MXOI Round 1」城市
__EOF__

本文作者:Sakurajimamai
本文链接:https://www.cnblogs.com/o-Sakurajimamai-o/p/18448970.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/o-Sakurajimamai-o/p/18448970.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现