对于一个树 最多有2n-2个度
对于每一个点我们先认为它的度为1 这样对于剩下的度 每一个对应一个权值 跑完全背包就可求出在大小n-2的时的取得的最大值(初始为负无穷) 剩下的度的大小为相当于1到n-1,一定可以将n-2的容量装满
#include#define inf 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeof(a))#define sd(x) scanf("%d",&(x))#define rep(i,a,b) for(int i=a;i<=b;i++)using namespace std;int dp[2050],w[2050];int main(){ int t; sd(t); while(t--) { int n; sd(n); rep(i,1,n) dp[i]=-inf; dp[0]=0; rep(i,1,n-1) sd(w[i]); int sum=n*w[1]; rep(i,2,n) rep(j,i-1,n-2) { if(dp[j]