摘要: 状态压缩 + 模拟 把AB串压缩成二进制,A用1表示,B用0表示。 枚举所有问题的子集,选中的问题用1表示,其余的用0表示。对于每个子集,我们去和所有问题按位与,这样对于选中的问题,答案是A的都是1,答案是B的都是0,不同的回答得到的状态也不同。 最后统计每个子集是否有超过k组问题不一样就行了。 阅读全文
posted @ 2019-07-15 21:04 清楚少女ひなこ 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 01背包 + 思维 首先可以发现,开头是1的要分开要切一次,中间的切两次,末尾是1的切一次。 把切的次数看成花费,1的个数看成价值,就可以01背包求解了。 但是有一点要注意,中间的连续1的串如果放在末尾,其实有一个可以少切一次,所以我们不用花费那么多,比如切k次,我们的花费算出来是有的答案是k+1, 阅读全文
posted @ 2019-07-15 18:44 清楚少女ひなこ 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 贪心 应该不是正解。。用set维护每个节点孩子的权值,然后再维护一个次大值和次小值。 这里的次值非常好维护,对于次大值而言,小于0那就是0,不然就是每个set的倒数第二个元素,因为最大值如果大于0是肯定要选的,最小值同理。。 然后这是用scanf卡过去的。。 include define INF 0 阅读全文
posted @ 2019-07-15 11:17 清楚少女ひなこ 阅读(167) 评论(0) 推荐(0) 编辑