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

摘要:题目 点这里看题目。 分析 我们可以先将树变成有根树,这样我们可以计算包含某个点的连通块数量,求和自然是树上所有连通块的数量。 那么,如果一个结点被连通块包含,则它的祖先也必须被包含。自顶向下的 DP 难以使用 DFS 解决,因此我们可以在 DFS 序上进行 DP,这样选择一个结点就是转移到 DFS 阅读全文
posted @ 2021-11-09 21:11 crashed 阅读(62) 评论(0) 推荐(0) 编辑
该文被密码保护。
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 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 不难想到,题目的要求,就是要组内边总是比相邻的组间边小。 也就是要组内边的最大值小于组间边的最小值。 于是可以从小到大加边。如果一个连通块在加边的时候,变成了一个团,这就意味着现在这个连通块可以单分为一组(剩余的边只有可能成为组间边,组间边都比组内边大)。之后我们就用 \ 阅读全文
posted @ 2020-10-12 21:30 crashed 阅读(154) 评论(0) 推荐(1) 编辑
摘要:题目 点这里看题目。 分析 首先我们对边进行定向:从 d 小的指向 d 大的。于是我们就一定会得到一个 DAG(参考题目条件)。 问题就相当于是求出这个 DAG 的拓扑序的方案数。 众所周知,这个问题目前还没有多项式算法,所以我们就可以弃题了 且慢,我们的图原先是一个仙人掌。仙人掌就 阅读全文
posted @ 2020-09-01 20:23 crashed 阅读(200) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 好美妙的思维题目!反正我是做不来了。 显然我们可以对于每一个点计算它作为根的答案,这个答案又可以通过 DP 的方式求出来。 它难道还能不是个 DP ? 直接求解概率比较复杂,而操作序列的总方案数比较好求,是 (n1)! 。不过,由于同一个操作序列的成功概率会因为 阅读全文
posted @ 2020-08-12 20:57 crashed 阅读(122) 评论(0) 推荐(1) 编辑
摘要:题目 点这里看题目。 分析 题目本身不难想,只需要在正常的 DP 外多加一个辅助状态即可求解附加问题。 这个方法就不细讲了。重点说的是一个比较优雅的做法。 考虑我们要最大化被两端覆盖的边的数量,也即是最小化只被一端覆盖的边的数量。现在我们就是同时最小化两个信息,并且存在优先级。 思考一下哪里存在天然 阅读全文
posted @ 2020-07-30 16:30 crashed 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 不难看出一个暴力 DP : f(u,i):当ui时,u的子树内的方案数。 转移显然: f(u,i)=vson(u)jif(v,j) 再设S(u,i)=jif(u,j)阅读全文
posted @ 2020-06-15 10:54 crashed 阅读(138) 评论(0) 推荐(0) 编辑
摘要:题目 "点这里" 看题目。 分析 不难想到这样的 DP : f(u,j):以u为根的连通块中异或值j的子树的个数。 转移类似于背包,设已经合并到u上的信息为g,得到: f(u,j)=(u,v)Eik=jg(i)f(v,k) 阅读全文
posted @ 2020-03-27 19:51 crashed 阅读(75) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示