摘要: 跟上面那篇轮廓线dp是一样的,但是多了两个条件,一个是在原图上可能有些点是不能放的(即障碍),所以转移的时候要多一个判断color[i][j]是不是等于1什么的,另外一个是我们可以有多的1*1的骨牌,1*1的骨牌使用数量一定要在[c,d]之间,所以状态加多一维,转移的时候多一种情况(放1的)。那么怎么初始化呢?有两种方法,一种是dp[0][0][d]=1,最后的答案的因为一定要用[c,d]之间,所以答案是dp[(t+1)&1][0][0~d-c].另外一种是dp[0][0][c~d]=1,最后答案是dp[(t+1)&1][0][0]学了就觉得很简单,60行不到的代码让我们和银奖 阅读全文
posted @ 2014-02-22 21:55 chanme 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节。题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m#include#include#include#include#include#include#define ll long longusing namespace std;int n, m;ll dp[2][1 > n >> m &&(n||m)) { memset(dp, 0, sizeof(dp)); ll *cur, *next; cur = dp[0]; next = dp[1]; cur[ 阅读全文
posted @ 2014-02-22 21:04 chanme 阅读(1434) 评论(0) 推荐(1) 编辑