牛客挑战赛30 C 小G砍树(level 3)(换根DP)

本篇博客详细解析了一道关于无根树的ACM题目,讨论了如何通过换根DP方法求解删除度为1的节点使得树最终只剩一个节点的不同方案数。内容包括确定根节点、DFS顺序、子树的处理以及乘法原则在选择节点标号中的应用,最终实现以每个节点为根时的答案计算。
摘要由CSDN通过智能技术生成

题目链接

题意:

给你一颗n个点的树,每一次你只能删除度数为1的点,问你有多少种方案可以把整棵树删到只剩一个点,

两个方案不同,当且仅当有一个点删除的顺序不同。答案MOD998244353

解析

换根dp:对于一颗无根树,先确定一个根后,求出答案的公式
然后再从确定的根出发,按照dfs顺序,分别将根转移到所有节点,同时更新答案公式中的变量,求一遍答案

这道题也是一样。先确定一个根,然后求出答案的公式。
确定完根之后,节点删除的顺序一定是确定了。在一棵子树里,根节点一定是最后删除的。
那么根节点的删除顺序一定是大于所有他的孩子以及孙子节点。
对于一棵子树,我们把删除顺序标为1....sz,(1:表示是第一个删除的),那么根节点的标号一定是sz
那么对于根节点的孩子节点一定是他自己那棵子树里面标号最大的点,这个我们就不需要管了,这个子问题
递归求解。同时,根节点的孩子节点之间标号没有相对大小顺序,即对于根的一个孩子j,他从1..sz-1标号里面
取szj个标号(任意,不一定连续),然后再从选出的szj个标号里面算出最大的给自己,剩下的给j的孩子们。
所以对于孩子选标号这个过程我们可以用乘法原则来把他们合并起来(第一个孩子先从1..sz-1里选sz_{j_{1}}个,

然后第二个孩子从剩下的s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值