SRM 600
2013-12-22 09:37
387 查看
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
题意:给你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
相关文章推荐
- 【转】C语言 字符数组与字符串
- x-webkit-speech 在网页中实现语音输入功能
- simpleButton的几种状态解析
- typedef用法总结
- C++编程规范之31:不要编写依赖于函数参数求值顺序的代码
- [编写高质量代码:改善java程序的151个建议]建议42,如何让一个工具类不可实例化
- 抽象类及其用法
- 网址列表
- 指定目录下所有文件后缀改名
- [编写高质量代码:改善java程序的151个建议]建议38-41
- -_-#【响应式】matchMedia
- 统计文件未接收的部分
- Centos系统设置
- frame和bounds的区别
- 用javascript实现简体和繁体字间的转换
- mapreduce测试
- ASP.NET中的XML和JSON
- 150个JS特效脚本
- 【转】C++ char数组转化为string
- 使用wxPython的绘图模块wxPyPlot进行数据可视化