题目链接 树形DP,考虑子节点对父节点的贡献. 设f[x][i][j]表示当前为x,用i个x去合成上一层装备,花费为j的最大价值. 由子节点转移时 是一个分组背包,需要一个辅助数组g[i][j]表示前i棵子树花费为j能贡献给x的最大价值. 那么 \(g[i][j] = max{g[i-1][j-k]+f[v][l*need[x]][k]}\).\(need[x]\)为x需要子节点v的个数,\(l\)为合成x的个数,这个同样需要枚举. 那么对于每个\(l\),可以枚举用多少个x合成上一层,更新f,…