前置技能二进制枚举子集
for(int j=i;j;j=(j-1)&i)
从集合本身开始
每次 - 1,&i 保证最后的结果一定是 i 的子集 (0 的位置不会变成 1)
及每次都是从左到右消去一个 1
思路: 二进制枚举这 n 个人的子集, 判断哪几个状态是能够在一辆车上的, 然后对于所有状态判断他的哪两个互补的子集能使得这个状态的人最少.
来源: http://www.bubuko.com/infodetail-3153008.html