随笔分类 -  算法基础:树形DP

摘要:前排提醒,本文转载自 Sshwy's Notes 转载仅供学习使用。 可能大家都知道树上背包合并 \(O(n^3)\) 对子树大小取min可以优化到 \(O(n^2)\) 。但是对于树上依赖背包问题,背包合并的复杂度仍不能接受。考虑形式化的问题: 一棵 $n$​ 个结点有根树,每个结点 $i$​ 有 阅读全文
posted @ 2021-08-26 21:28 RioTian 阅读(221) 评论(0) 推荐(0) 编辑
摘要:蒟蒻大佬时隔三个月更新了!!拍手拍手 而且是更新了几篇关于DP的文章(RioTian狂喜) 现在赶紧复习一波树形DP.... 树形DP基础:Here,CF上部分树形DP练习题:Here \[ QAQ \] 在学习树形DP之前,我们先要搞清楚一个问题,什么是树?根据图论课上学到的知识我们知道,连通的无 阅读全文
posted @ 2021-08-19 21:12 RioTian 阅读(18055) 评论(1) 推荐(4) 编辑
摘要:本次 5 道题均来自Codeforce 关于树形DP的算法讲解:Here 791D. Bear and Tree Jumps 如果小熊每次能跳跃的距离为1,那么问题变为求树上任意两点之间距离之和。 对于每一条边sum1和sum2分别表示边的左右点数,ans=各边的sum1*sum2之和即为答案。 而 阅读全文
posted @ 2021-08-12 16:49 RioTian 阅读(898) 评论(0) 推荐(0) 编辑
摘要:这题直接贪心显然不可行. 考虑树形dp,用 \(f_i\) 表示到 \(i\) 人后,以 \(i\) 为根的所有人安装完的最短时间. 对于一个节点 \(u\), 假设拜访子节点的顺序为 \(v_1,v_2,...,v_m\) ,那么得到转移方程. \[ f_u = max(f_v + \sum\li 阅读全文
posted @ 2021-08-07 10:26 RioTian 阅读(123) 评论(0) 推荐(0) 编辑
摘要:前置芝士:Here 本文是基于 OI wiki 上的文章加以修改完成,感谢社区的转载支持和其他方面的支持 树形 DP,即在树上进行的 DP。由于树固有的递归性质,树形 DP 一般都是递归进行的。 基础 以下面这道题为例,介绍一下树形 DP 的一般过程。 例题 洛谷 P1352 没有上司的舞会 题目描 阅读全文
posted @ 2021-08-06 20:30 RioTian 阅读(3975) 评论(0) 推荐(1) 编辑
摘要:补题链接:Here 一个树形水系,有 \(n\) 个结点,根结点称为源点,叶子结点称为汇点,每条边都有水量限制$C(x,y) $(\(x,y\) 为这条边的两个端点),源点单位时间流出的水量称为整个水系的流量,求以哪一个结点作为源点整个水系的流量最大。 首先得理解到这是一道“不定根”的树形DP问题, 阅读全文
posted @ 2021-04-26 20:51 RioTian 阅读(102) 评论(0) 推荐(0) 编辑
摘要:题目链接:Here 树形DP 算法讲解:Here 无向联通图其实就是树的形状,其次让我们以 s 为根使得所有的叶子节点不能到达根并且让删去边权的总和最小,那么就是典型的 树形DP 了。 \(dp_i\) 代表以节点 \(i\) 为根节点而其子树内的根节点无法达到根节点的最小代价,\(dp_i = m 阅读全文
posted @ 2021-04-13 16:32 RioTian 阅读(212) 评论(0) 推荐(0) 编辑
摘要:Farthest Nodes in a Tree Given a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. The edges of the tree are w 阅读全文
posted @ 2020-11-10 23:08 RioTian 阅读(306) 评论(0) 推荐(1) 编辑
摘要:本文由TechFlow原创,本博文仅作为知识点学习,不会用于任何商业用途! 今天我们来看一个有趣的问题,通过这个有趣的问题,我们来了解一下在树形结构当中做动态规划的方法。 这个问题题意很简单,给定一棵树,并不一定是二叉树,树上的树枝带有权重,可以看成是长度。要求树上最长的链路的长度是多少? 比如我们 阅读全文
posted @ 2020-11-06 22:29 RioTian 阅读(968) 评论(0) 推荐(1) 编辑
摘要:「HDU-2196」Computer 树形dp,树的最长路径(最远点对) 题意 给出一棵nn个结点的无根树,求出每个结点所能到达的最远点的距离。 解法 将无根树转成有根树,并进行两次DFS。 第一次DFS求出每个结点在其子树中的正向最大距离和正向次大距离,记为dp[0][x]和dp[1][x],并标 阅读全文
posted @ 2020-09-29 21:13 RioTian 阅读(482) 评论(0) 推荐(1) 编辑
摘要:A.没有上司的舞会 基础树形DP emmm,蒟蒻发现自己的DP太辣鸡了。。。所以来练练DP,这题的话实际上应该算是树DP的入门题吧,转移还是挺好想的。 每次在每个节点都会有个选择,就是选还是不选,如果选的话,那么它的儿子节点就不能选,如果不选的话它的儿子节点就可以选,也就是说我们需要另开一维状态来记 阅读全文
posted @ 2020-08-17 16:26 RioTian 阅读(160) 评论(1) 推荐(0) 编辑