随笔分类 - dp-树形dp
摘要:传送门 最后基本靠自己的思路秒了这个题吧 先排除不合法情况 一个K一个M十分恶心 然后结合不合法仔细想一想只有m==2的时候小头才会产生花费 所以问题就变成选择k个点 花费是所有两个端点都选择的边的边权 求最小花费 按照套路先考虑dp[i][j][0]表示以i为根处理完当前子树 选j个点 0/1表示
阅读全文
摘要:传送门 大概是树dp最后一发 题意要求每个点做根的时候中最大值 我们显然不能直接舍掉点不考虑 所以考虑点与点之间的dp[]的转移 转移也就是父子之间转移 我们发现根节点上移一位的时候 子树所有点权值++ 其它权值-- 所以开一个dp[] Time cost: 65min Code: 1 #inclu
阅读全文
摘要:传送门 讲一下做题的过程 Day1 指定标签搜索 看题 从入门到入土 恶心 再见吧 Day2 这么咕了一道题好像不好?还是做一下吧 10 minutes later…… 这不就是个二叉树吗! 题意就是统计每个点经过的左右边的路径上选择多少条边进行标记 然后化成一个没法巧算的式子来恶心你 求最小值 给
阅读全文
摘要:传送门 好题啊 给定边权树 求隔离所有指定点的最小花费 考虑树dp的话 自然想到 f[x]表示子树内处理完从根节点出发没有敌人的最小花费 g[x]表示子树内处理完从根节点出发仍有敌人的最小花费 这个时候仍然合法() 又显然根节点是否有敌人是有影响的 所以分类讨论 首先子树没有敌人不用考虑 I. 根节
阅读全文
摘要:传送门 又一个没有上司的舞会 这个dp有环 妈妈怎么办啊 要不...环上随便断一条边? 然后最后选的时候分别取两个根节点不选的情况的最大值 几个要点: 1.图可能是多个环套树 要循环走完 2.不能只记录顶点 因为如果有重边的话会把二元环筛掉 3.位运算优先级... 要写成(i^1)==cntline
阅读全文
摘要:传送门 树形dp基础题 求带点权树直径 然后这个点权就是每个点的点度(son[])... 所以可以简化一下 按照正常的套路维护从根开始的最长链和次长链 dp数组存的时候+1改成+son[x]-1就可以了 所以dp[x] = maxx + maxxx + son[x] - 1 (maxx 和 maxx
阅读全文
摘要:传送门 比较奇怪的树形背包 首先需要处理读入的问题 这题史诗递归读入 然后递归读入就不用建图 这题特点是只有叶子有价值 所以背包就不太有用 坑点就是这个人进去还得出来... 而且不能把时间都用完(导致75) Time cost: 35min Code: 1 #include<cstdio> 2 #i
阅读全文
摘要:传送门 这题最难了(认真 发现自己之前搞得树上背包又凉了... 写了一个O(n*V)的dfs序优化贴一下吧 50 minutes later... MD这题怎么D不出来 结果这题不是典型的树dp 因为孩子数特别多 然后深度较小 所以不需要采用树dp 的形式 直接判断是否为附件 总体复杂度为O(n*(
阅读全文
摘要:传送门 今天开始尽量补一补欠的70多道题的blog...(菜啊) 都是几句话的事 周末大概就完了 一看不是树dp经典题吗 最小覆盖 然后告诉我有些点不必覆盖? 20minutes later 发现其实是一样的...因为不必覆盖不是一定不能覆盖 其实是我一开始想成记录放的节点个数那个题 然后状态设计跪
阅读全文
摘要:动态规划的重点就是找出正确的dp顺序/关系 而树形结构中严格的父子关系极其方便 树dp从数据结构角度来讲 可以说是 利用dp避免了做每个子树的答案的时候要遍历整个子树 从状态来讲 "树 dp 常常需要设计几种意义不同的状态,而且状态的含义通常与该点为根的子树有关。" --By Yukimai 树 d
阅读全文
摘要:time cost:65min 这题……顿时让我对直径这个东西产生了深深地畏惧……样例输出的直径全是0但是就应该是0……D了好久……这道题操作1就是预处理所有直径就行操作2比较恶心将两个点连边的时候我们给他归进一个并查集然后每次连点的时候求出每个并查集中的最大直径每次加一对点连新边的时候用来更新的一
阅读全文

浙公网安备 33010602011771号