SRM 600

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值