【East!模拟赛】【Round1】【BZOJ1017】魔兽地图Dotr 树形DP

这篇博客介绍了如何解决BZOJ1017问题,采用树形DP的方法。作者提到不需要新建树,直接利用原树进行操作。状态定义为F[i][j][k]表示节点i给其父亲j个花费为k时的最大收益。难点在于确定父亲购买的数量和确保所有子节点的贡献。虽然暴力方法可行,但通过记录父亲拥有的物品数量优化状态转移。在枚举过程中,使用小技巧处理每个子节点的贡献,以确保正确性。最后,提供了代码供读者理解。
摘要由CSDN通过智能技术生成

题意不多说。

曰:

    呃,首先显然这是一个树形DP。

    然后我不会什么高大上的算法,我只能提供一种非常慢,但是能在BZ切的算法(因为是总时限并且还有O2)。

题解:

    不需要新建树,这个树就行。

    首先这道题一眼就能想到树形背包。。但是树形背包怎么做呢?

    因为需要合成,所以这里的状态F[i][j][k]并不是i节点有j个花费为k时的最大收益,而是i节点给其父亲j个花费k时的最大收益(不含父亲收益)。好吧,这个我自己没想出来,但是或许我可以给你讲讲怎么想出来。

    我们考虑这道题有两个难点:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值