51nod1673 树有几多愁(状压DP)

该博客探讨了一种树形结构的问题,其中目标是最大化所有叶子节点到根节点路径最小值的乘积。通过分析,得出标号顺序必须单调递增,并引入了动态规划(DP)和状压DP的解决方案。博主详细阐述了如何利用对数存储乘积,计算状态转移以及优化状态转移的过程,解决了这个问题。
摘要由CSDN通过智能技术生成

传送门

lyk有一棵树,它想给这棵树重标号。
重标号后,这棵树的所有叶子节点的值为它到根的路径上的编号最小的点的编号。
这棵树的烦恼值为所有叶子节点的值的乘积。
lyk想让这棵树的烦恼值最大,你只需输出最大烦恼值对1e9+7取模后的值就可以了。
注意一开始1号节点为根,重标号后这个节点仍然为根。:数据保证叶子节点个数<=20。

题解:状压DP。

首先想到对于每个叶子节点到根节点的链上的标号一定是单调递增的(上面比下面优)。
同时,每个叶子节点到根节点未被标号的路径会一次性被标号,也就是说只要确定了叶子节点的选择顺序,那么整棵树的标号也就确定,因为每次标号会将所有到根的路径上未被标号的点给标号。

证明应该很明显,因为是取到根节点的最小值,假设现在有两条链,设给两条链先后标号的两个min值为 min1,min2 ,且 min1 为较小值,那么如果同时标号必然会是 min1,min3 ,且 min3min2<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值