250:
题意:给你50个数,问你最少去掉多少数能使得剩下的数不可能具备子集S,OR起来为goal
如果一个数不是goal的子状态,那么我们没必要删除他,所以我们只关心goal的子状态的数
1:如果所有的数OR起来都没有到达goal,那么就是0
2:每个数都会贡献一些位,去掉1的个数最少的那一位就好了
600:
题意:给你一个14*14的01矩阵,现在要反转最少的网格使得矩阵至少有needrow行回文以及needcol列回文
稍微算了下,如果枚举行再枚举列的话太过于暴力(好像也还行?)
反正让我们开始dp吧
首先枚举想边dp边考虑两个因素,几乎是不太可能的,那么就暴力枚举哪些行是回文的,去掉一个限制因素,然后开始对列进行dp
dp的过程写的不好的话会有各种讨论,我就是属于写的不好的那种
每次dp c 与 m-1-c两列,然后枚举两列回文的状态共有四种情况
还要注意如果某些行是回文的,要强制考虑进去
https://github.com/becauseofyou/Contests/tree/master/topcoder/srm600