考虑树形DP,这题其实是把背包搬到了树上,使得选一个物体需要经过他的前置物体才能选 那么我们只要在原有的树形DP上加一个背包即可 那么有方程,其中to是所有的儿子,第二维存的就是一维背包的东西 详细见代码... #include<bits/stdc++.h> using namespace std; const int maxn=500; int n,m; int fa[maxn],s[maxn]; int f[maxn][maxn],tmp[maxn][maxn]; struct node{ int to,nxt; }tree[maxn];int head[maxn...