题解 dp[i][j][0/1][0/1]表示以\(i\)为根的子树,用了\(j\)个,i点选了或者没选,i点被覆盖或没被覆盖 转移比较显然,但是复杂度感觉不太对? 其实转移到100个的时候就使第二维满了,之后每多两个点一定会多一个守卫,这个时候会使第二维某些位置开始空了,最后转移其实只有后几维有效 具体优化的方法就是我枚举每个儿子的j的时候,只有j所在的位置有值我们才枚举父亲背包大小来更新 代码 #include <bits/stdc++.h> #define fi first #defin…