参考:
https://www.cnblogs.com/huibixiaoxing/p/8541096.html
http://hzwer.com/5198.html
神题。
容易发现这是个有依赖关系的背包,但不同的是,这里各个依赖关系树中是父亲依赖儿子的。
设物品
i
i
的力量、价格分别为,如果是高级物品直接处理一下就算出来了;
son[i][j]
s
o
n
[
i
]
[
j
]
表示
i
i
的第个儿子,
tot[i]
t
o
t
[
i
]
表示
i
i
的儿子个数,表示合成一个
i
i
需要的物品个数(以下省略
i
i
)。
表示选完
i
i
为根的子树,其中贡献个物品
i
i
给父亲,总价格的最大力量值;
g[x][i][j]
g
[
x
]
[
i
]
[
j
]
表示选完
x
x
的前个子树,总价格为
j
j
的最大力量值,其中可以省略。
对于每个物品
x
x
,枚举总共合成的个数
l
l
。
然后枚举其中一颗子树的总价格,对于
g
g
有:
然后考虑这 l l 个物品中不向上贡献的个数,进一步得到 f f 的值:
最后因为可能为森林,所以还要做一个泛化物品的背包dp。