题解:
一道不错的状压dp
关键在于如何处理出初始状态
dp[i]=min(dp[j]+dp[i^j])
初始状态可以枚举子集
然后对他们进行排序,如果相邻的小于c,就说明这个方案可行,步数就是sum-1
为什么这么做是对的,所以 我们可以对于那些需要全部交换的,答案就是sum-1
而对那些有的不需要交换的 可以通过子集递推