第四题:T4树的覆盖
标签:树、最小点覆盖、树形 d p dp dp
题意:求树的最小点覆盖集的大小和对应的数量,数量对 1 , 000 , 000 , 007 1,000,000,007 1,000,000,007取余数。
所谓覆盖集,是该树的点构成的集合,对树上每一条边,至少有一个顶点属于该集合。某个特定覆盖集的大小就是该集合中点的数量。
题解:
第一问:最小点覆盖集的大小比较好求,也是非常经典的一个模型,和上题树形 d p dp dp差不多,对于每个节点 u u u分一下两种情况:
dp[u][0]:表示节点u属于点覆盖集,且以点u为根的子树中所连接的边都被覆盖的情况下点覆盖集中所包含最少点的个数。
dp[u][1]:表示点u不属于点覆盖集,并且以点u为根的子树中所连接的边都被覆盖的情况下点覆盖集中所包含最少点的个数。

以第二个样例举例: 4 4 4、 5 5 5、 6 6 6这三个节点很显然选和不选到覆盖集分别是 1 1 1和 0 0 0。
对于 2 2 2这个节点来说,如果选了,那么 2 2 2到 5 5 5这条边,可以直接覆盖,我们加上节点 5 5 5不选的情况( d p [ 5 ] [ 1 ] dp[5][1] dp[5][1]);如果不选,那么 2 2 2到 5 5 5这条边,得通过选节点 5 5 5(即加上 d p [ 5 ] [ [ 0 ] dp[5][[0] dp[5][[0])。
对应节点 3 3 3同理,然后回到节点 1 1 1来看,我们可以把节点 1 1 1选了,那么节点 2 、 3 、 4 2、3、4 2、3、4</

本文介绍了如何使用动态规划解决T4树的最小点覆盖问题,涉及状态转移方程、节点划分(是否属于覆盖集)以及递归过程。通过分析节点的不同状态,计算最小覆盖集的大小和数量。
最低0.47元/天 解锁文章
1524

被折叠的 条评论
为什么被折叠?



