上海计算机学会 2023年10月月赛 乙组T4 树的覆盖(树、最小点覆盖、树形dp)

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

第四题: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 234</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值