随笔分类 - 动态规划-树形dp
摘要:题目链接 "BZOJ4919" 题解 链上的维护一个数组表示长度为的最小的结尾大小 我们可以用来维护这个数组,子树互不影响,启发式合并 一个点取更新数组时,只会改变第一个比它大的地方,因为这个点一定是将比它小的位置,只有后位置
阅读全文
摘要:题目链接 "hdu5909" 题解 设表示以为根的子树,一定取,剩余节点必须联通,异或和为的方案数 初始化 枚举儿子转移 $$f[i][j] = f[i][j] + \sum\limits_{x \; xor \; y =
阅读全文
摘要:题目链接 "BZOJ2878" 题解 除了实现起来比较长,思维难度还是挺小的 观察数据范围发现环长不超过,而我们去掉环上任何一个点就可以形成森林 于是乎我们枚举断掉的点,然后只需求出剩余每个点为根的答案 设表示从出发等概率走向子树的期望步数 如果为根就是我们所需的答案
阅读全文
摘要:题目链接 "BZOJ3522" 题解 就是询问每个点来自不同子树离它等距的三个点的个数 数据支持,可以对每个距离分开做 设表示的子树中到距离为的点的个数 利用换根法可得到每个点作为根时的值 然后随便容斥一下就是答案 C++ include incl
阅读全文
摘要:题目链接 "loj2542" 题解 设表示从节点出发,走完集合中的点的期望步数 记为的度数,为边集,我们很容易写出状态转移方程 ①若 $$f[i][S] = \frac{1}{de[i]}\sum\limits_{(i,
阅读全文
摘要:题目链接 "BZOJ1495" 题解 观察表格,实际上就是分多和两种情况,分别对应每个点选权值或者权值,所以成对的权值可以分到每个点上 所以每个非叶节点实际对应一个状态,表示子树数量关系 设表示节点子树中选了个,其祖先的状态为
阅读全文
摘要:题目链接 "BZOJ5333" 题解 看到式子,立即想到二叉树上一个点及其个父亲权值和【如果有的话】模意义下为 考虑如何满足条件 我们假设号为第层 那么我们先满足第层的条件 由于第层也满足条件 由同余的性质第层的权值等于第层的权值
阅读全文
摘要:题目链接 "BZOJ5314" 题解 设表示为根的子树,用了个监测器,节点是否被控制,节点是否放置的方案数 然后转移即可 ?? 用上子树大小来优化就是的 对于子树大小都超过的子树,转移
阅读全文
摘要:题目链接 "BZOJ1596" 题解 先抽成有根树 设表示以为根,儿子都覆盖了,父亲是否覆盖,父亲是否建塔的最少建塔数 转移一下即可 C++ include include include include include include define Redge
阅读全文
摘要:题目链接 "BZOJ4035" 题解 神题啊。。。orz 不过网上题解好难看,数学推导不写怎么看。。【~~Latex中毒晚期~~】 我们由题当然能很快写出方程 设表示从出发逃离的期望步数,为该点度数 $$ \begin{aligned} f[u] &=
阅读全文
摘要:题目链接 "uoj185" 题解 设表示为根的子树,号点对应图上号点时的方案数 显然这样会使一些节点使用同一个节点,此时总的节点数就不满个 我们枚举选的点,再进行 然后根据选的点数量进行容斥 【BZOJ卡不过QAQ】 C++ inclu
阅读全文
摘要:题目链接 "BZOJ4890" 题解 枚举断开哪一条边,然后对剩余的两棵树分别做一遍换根法树形dp 需要求出每个点到树中其它点距离的最大值和次大值【用以辅助换根计算最大值】 求出每棵树中的最长路径,然后再将两棵树中最小值相连保证相连后产生的最大值最小 $O(n^2
阅读全文
摘要:题目链接 "BZOJ4824" 题解 观察出题目中的关系实际上是完全二叉树的父子关系 我们设为以为根的节点在其子树中排名为的方案数 转移时,枚举左右子树分别有几个节点比小,进行转移 乍一看是的,但其复杂度分析和某一题很像 就是在根处枚举两个子树大小
阅读全文
摘要:题目链接 "POJ" 题解 背包树形dp板题 就是读入有点无聊,浪费了很多青春 C++ include include include include include include include define LL long long int define REP(i,n) for (int i
阅读全文
摘要:题目链接 "POJ3585" 题解 二次扫描与换根法 对于这样一个无根树的树形dp 我们先任选一根进行一次树形dp 然后再扫一遍通过计算得出每个点为根时的答案 C++ include include include include include define LL long long int de
阅读全文
摘要:题目链接 "选课" 题解 基础背包树形dp C++ include include include include include define LL long long int define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) defi
阅读全文
摘要:题目链接 "BZOJ1017" 题解 orz "hzwer" 树形dp神题 设表示号物品恰好花费金币,并将个物品贡献给父亲的合成时的最大收益 计算时,我们先枚举合成了x个号物品,计算出此时的花费各种金币下最大收益 然后就可以枚举
阅读全文
摘要:题目链接 "hdu5834" 题解 思路很粗犷,实现很难受 设表示向子树走回来或不回来的最大收益 设表示向父亲走走回来或不回来的最大收益 再设为的次优收益 对于,贪心选择所有$f[v][1] 2 w \ge
阅读全文