随笔分类 - 动态规划-树形DP
摘要:题目 点这里看题目。 分析 我们可以先将树变成有根树,这样我们可以计算包含某个点的连通块数量,求和自然是树上所有连通块的数量。 那么,如果一个结点被连通块包含,则它的祖先也必须被包含。自顶向下的 DP 难以使用 DFS 解决,因此我们可以在 DFS 序上进行 DP,这样选择一个结点就是转移到 DFS
阅读全文
摘要:题目 点这里看题目。 分析 数据特殊,显然需要数据分治。 max 此时 的点没有贡献,那么就相当于 全部相等。这样 最终的贡献与 无关,我们把 的点全部模拟点亮一遍即可。 max 不难想到做树形 DP 。我们可以想到这样的状态: \
阅读全文
摘要:题目 点这里看题目。 分析 不难想到,题目的要求,就是要组内边总是比相邻的组间边小。 也就是要组内边的最大值小于组间边的最小值。 于是可以从小到大加边。如果一个连通块在加边的时候,变成了一个团,这就意味着现在这个连通块可以单分为一组(剩余的边只有可能成为组间边,组间边都比组内边大)。之后我们就用 \
阅读全文
摘要:题目 点这里看题目。 分析 首先我们对边进行定向:从 小的指向 大的。于是我们就一定会得到一个 DAG(参考题目条件)。 问题就相当于是求出这个 DAG 的拓扑序的方案数。 众所周知,这个问题目前还没有多项式算法,所以我们就可以弃题了 且慢,我们的图原先是一个仙人掌。仙人掌就
阅读全文
摘要:题目 点这里看题目。 分析 好美妙的思维题目!反正我是做不来了。 显然我们可以对于每一个点计算它作为根的答案,这个答案又可以通过 DP 的方式求出来。 它难道还能不是个 DP ? 直接求解概率比较复杂,而操作序列的总方案数比较好求,是 。不过,由于同一个操作序列的成功概率会因为
阅读全文
摘要:题目 点这里看题目。 分析 题目本身不难想,只需要在正常的 DP 外多加一个辅助状态即可求解附加问题。 这个方法就不细讲了。重点说的是一个比较优雅的做法。 考虑我们要最大化被两端覆盖的边的数量,也即是最小化只被一端覆盖的边的数量。现在我们就是同时最小化两个信息,并且存在优先级。 思考一下哪里存在天然
阅读全文