O(1) 的小乐
豆瓣账号:http://www.douban.com/people/sosisarah/
摘要: 这个题目非常赞! 给定一个矩形,要求用1*2 的格子进行覆盖,有多少种覆盖方法呢? dp[i][j] 当状态为j,且第i行已经完全铺满的情况下的种类数有多少种?j中1表示占了,0表示没有被占。 很显然,当每行被放了之后,有一些状态是不可能的,我们这里用1 表示竖着放,0表示横着放。 所以两个0 要相邻,这是程序中的s。 我们每一状态转移,枚举每一个可能的状态,我们希望dp[i][j] 中的j呈现出... 阅读全文
posted @ 2014-04-17 13:06 O(1)的小乐 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题意:一个矩形网格,可以填0或1, 但有些位置什么数都不能填,要求相邻两个不同时为1,有多少种填法。矩形大小最大 12*12. 压缩状态DP大多有一个可行的state的范围,先求出这个state范围,对接下来的解题非常有帮助! 注意特判 N==1 的情况。#include #include #include #include using namespace std;vector t; // ... 阅读全文
posted @ 2014-04-17 10:38 O(1)的小乐 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 这个问题要看状态怎么想,第一种直接的想法是1代表未合并,状态就从1111111 转移到 带有1个0,然后带有两个0, 但是这样子编程非常不直观。换一种思路,0代表未合并,但是我可以先合并前几个,就是说在压缩状态的过程中,状态转移的时候尽量是一个连续量的转化#include #include #inc... 阅读全文
posted @ 2014-04-17 09:05 O(1)的小乐 阅读(155) 评论(0) 推荐(0) 编辑