洛谷 P4037 [JSOI2008]魔兽地图(树形dp)

参考:
https://www.cnblogs.com/huibixiaoxing/p/8541096.html
http://hzwer.com/5198.html

神题。
容易发现这是个有依赖关系的背包,但不同的是,这里各个依赖关系树中是父亲依赖儿子的。
设物品 i i 的力量、价格分别为p[i],w[i],如果是高级物品直接处理一下就算出来了; son[i][j] s o n [ i ] [ j ] 表示 i i 的第j个儿子, tot[i] t o t [ i ] 表示 i i 的儿子个数,num[i][j]表示合成一个 i i 需要的物品j个数(以下省略 i i )。
f[i][j][k]表示选完 i i 为根的子树,其中贡献j个物品 i i 给父亲,总价格k的最大力量值; g[x][i][j] g [ x ] [ i ] [ j ] 表示选完 x x 的前i个子树,总价格为 j j 的最大力量值,其中x可以省略。
对于每个物品 x x ,枚举总共合成x的个数 l l
然后枚举其中一颗子树的总价格k,对于 g g 有:

g[i][j]=max{g[i1][jk]+f[son[j]][lnum[son[j]]][k]}

然后考虑这 l l 个物品x中不向上贡献的个数,进一步得到 f f 的值:

f[x][i][j]=max{g[tot][j]+(lj)p[x]}

最后因为可能为森林,所以还要做一个泛化物品的背包dp。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值