for(int i=1; i<=(1<<n)-1; i++){ for(int j=i; j; j = (j-1) & i){ dp[i] = min(dp[i],dp[j] + dp[i^j]); } }
这就是一个状压DP,里面转移用子集枚举。 虽然感觉可能复杂度是 O(2n×3n)O(2^n\times3^n)O(2n×3n) 但是跑的是真快啊,应该不是这个复杂度。