Description
夏令营有N个人,每个人的力气为M(i)。请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法?
对于100%的数据满足:2<=N<=20,1<=M(i)<=100000000
Analysis
没心情码了,写口胡题解
一看n<=20肯定是状压或者搜索什么的
单独分析每个数,可能不选,选=>{在集合A,在集合B}
我们尝试把在A的数赋值为+,在B的赋为-
我们可以枚举每个数,如果最后的和为0就说明该选取状态合法
3^20爆炸
但是实际上确定了一组数的一半就确定了一组数的另一半。
所以我们砍半,只枚举一边,记录下和及选取状态,存起来。当然和很大要hash
选取状态就要写vector
还要去重,扫一遍即可
然后两边的可能的状态乘起来累计答案
3^10