随笔分类 -  动态规划-树形DP

摘要:题目 点这里看题目。 分析 我们可以先将树变成有根树,这样我们可以计算包含某个点的连通块数量,求和自然是树上所有连通块的数量。 那么,如果一个结点被连通块包含,则它的祖先也必须被包含。自顶向下的 DP 难以使用 DFS 解决,因此我们可以在 DFS 序上进行 DP,这样选择一个结点就是转移到 DFS 阅读全文
posted @ 2021-11-09 21:11 crashed 阅读(104) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2021-11-02 19:50 crashed 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-10-04 20:37 crashed 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-07-06 22:01 crashed 阅读(0) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 数据特殊,显然需要数据分治。 max 此时 \(c=0\) 的点没有贡献,那么就相当于 \(c\) 全部相等。这样 \(c\) 最终的贡献与 \(d\) 无关,我们把 \(c=1\) 的点全部模拟点亮一遍即可。 max 不难想到做树形 DP 。我们可以想到这样的状态: \ 阅读全文
posted @ 2020-11-19 22:25 crashed 阅读(156) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 不难想到,题目的要求,就是要组内边总是比相邻的组间边小。 也就是要组内边的最大值小于组间边的最小值。 于是可以从小到大加边。如果一个连通块在加边的时候,变成了一个团,这就意味着现在这个连通块可以单分为一组(剩余的边只有可能成为组间边,组间边都比组内边大)。之后我们就用 \ 阅读全文
posted @ 2020-10-12 21:30 crashed 阅读(165) 评论(0) 推荐(1)
摘要:题目 点这里看题目。 分析 首先我们对边进行定向:从 \(d\) 小的指向 \(d\) 大的。于是我们就一定会得到一个 DAG(参考题目条件)。 问题就相当于是求出这个 DAG 的拓扑序的方案数。 众所周知,这个问题目前还没有多项式算法,所以我们就可以弃题了 且慢,我们的图原先是一个仙人掌。仙人掌就 阅读全文
posted @ 2020-09-01 20:23 crashed 阅读(234) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 好美妙的思维题目!反正我是做不来了。 显然我们可以对于每一个点计算它作为根的答案,这个答案又可以通过 DP 的方式求出来。 它难道还能不是个 DP ? 直接求解概率比较复杂,而操作序列的总方案数比较好求,是 \((n-1)!\) 。不过,由于同一个操作序列的成功概率会因为 阅读全文
posted @ 2020-08-12 20:57 crashed 阅读(135) 评论(0) 推荐(1)
摘要:题目 点这里看题目。 分析 题目本身不难想,只需要在正常的 DP 外多加一个辅助状态即可求解附加问题。 这个方法就不细讲了。重点说的是一个比较优雅的做法。 考虑我们要最大化被两端覆盖的边的数量,也即是最小化只被一端覆盖的边的数量。现在我们就是同时最小化两个信息,并且存在优先级。 思考一下哪里存在天然 阅读全文
posted @ 2020-07-30 16:30 crashed 阅读(222) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 不难看出一个暴力 DP : \(f(u,i)\):当$u$取$i$时,$u$的子树内的方案数。 转移显然: \(f(u,i)=\prod_{v\in son(u)}\sum_{j\le i} f(v,j)\) 再设$S(u,i)=\sum_{j\le i}f(u,j)$, 阅读全文
posted @ 2020-06-15 10:54 crashed 阅读(149) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 不难想到这样的 DP : $f(u,j)$:以$u$为根的连通块中异或值$j$的子树的个数。 转移类似于背包,设已经合并到$u$上的信息为$g$,得到: $$f(u,j)=\sum_{(u,v)\in E}\sum_{i\oplus k=j}g(i)f(v,k)$$ 阅读全文
posted @ 2020-03-27 19:51 crashed 阅读(87) 评论(0) 推荐(0)