随笔分类 - DP --- 树形dp
摘要:题面 题解 CF1327F AND Segments + 整体 dp。 首先预处理 \mathrm{pre}_i 表示向上最深的 f(e) = 1 的边的深度最小值。 设 f_{i, j} 表示当前在点 i,最深的 f(e) = 1 的深度为 j 的方
阅读全文
摘要:"题面" 题解 首先将所有相等的用并查集缩点,然后会发现题目有一个很有用的性质: 对每张图片i,小D都最多只记住了某一张质量不比i差的另一张图片K_i。 于是将K_i作为i的父亲节点,对于K_i = 0的点,令i的父亲为n + 1即可。 开始树形dp,设$f[x]
阅读全文
摘要:"题面" 题解 首先我们需要看懂题目 然后我们需要发现一个结论 只要有一个节点的权值确定,那么整棵树的权值就确定了 就像这样:(图片来源于网络,侵删) 然后我们根据这张图片,可以设f[i] = a[i] \cdot \prod_f \mathrm{son}[f] 其中f是i的祖先,$\m
阅读全文
摘要:题面 \text{BZOJ}间接权限题 洛谷的弱化版 题解 三点距离两两相等要满足以下条件: 有一个相同的\text{LCA} 所以如果存在一个点,使得另外两个点在它子树中,距离为d,且\text{LCA}距这个点为d, 那么这三个点就距离两两相等。 设f[i][j]表示以$
阅读全文
摘要:"题面" 题解 树形dp(最大独立集) 设f_{i,0/1}表示dp到第i个点,在这个点放了(没放)士兵的最小花费 直接转移即可。 代码 cpp include include include define RG register define file(x) freopen( x"
阅读全文
摘要:"题面" 题解 树形背包板子题。 设f[i][j]表示在以x为根的子树选j门课(包括x)能够获得的最高学分,用分组背包转移即可。 代码 cpp include include define RG register inline int read() { int data = 0, w
阅读全文