T1考场上的思路很奇特,拿了为数不多的TLE70,复杂度很玄学,多谢良心出题人没有全卡掉,
T2只会暴力,T340分的二分比较显然,但是没有往下想剪枝
总的来说状态不算好,剪枝要尽量去想
T1:
暴力水过,刚会枚举子集: for(int i=s;i;i=(i-1)&s)
预处理用vetor存一下每个sum值对应那些状态,
然后枚举s,对于当前的s来说,只需要看是否存在一个子集的sum是w[s]/2
那么可以有两种方式,一种是枚举w[s]/2的vector另一种是枚举子集,只需要去枚举两者中小的那个
T3「二分」「剪枝」
枚举x,然后进行二分,
剪枝是对于当前的答案去chk(ans)
如果ans不行的话,直接continue,因为再二分下去不会得到更优的答案