别以为我在刷水题。。。。

今天做了场srm,500pt想到了是dp但是无从下手,但是看了rng_58的神代码后顿觉海阔天空啊(盯着看了一个下午),相比于一年前的写法,真的是不忍直视啊,

TC真是个好地方。。。赞!

其实就是将普通的铺砖块问题用类似于插头dp逐格递推的思路来写。下面的代码相信大家应该都能看懂。

#include <cstdio>
#include <cstring>
#include <algorithm>
long long dp[2][1<<11];
int main() {
int n , m;
while(scanf("%d%d",&n,&m),n||m) {
int cur = 0 , nxt = 1;
dp[cur][0] = 1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
memset(dp[nxt],0,sizeof(dp[nxt]));
for(int s = 0; s < (1<<m); s++) if(dp[cur][s]){
if(s&1){dp[nxt][s>>1] += dp[cur][s];continue;}
if(j+1<m && !(s&2) ){
int mask = ( s | 2 ) >> 1;
dp[nxt][mask] += dp[cur][s];
}
if(i+1<n) {
int mask = (s | (1<<m)) >> 1;
dp[nxt][mask] += dp[cur][s];
}
}
std::swap(cur,nxt);
}
}
printf("%I64d\n",dp[cur][0]);
}
return 0;
}

下面是一年前的写法。。。

#include<stdio.h>
#include<string.h>
int h,w;
__int64 dp[15][2050];
void dfs1(int row,int state,int col,int state2){
if(col>w) return ;
if(col==w) {
dp[row+1][state2]+=dp[row][state];
return ;
}
if(!(state&(1<<col))) dfs1(row,state,col+1,state2+(1<<col));
else dfs1(row,state,col+1,state2);
}
void dfs2(int row,int state,int col,int state2){
if(col>w) return ;
if(col==w) {
if(state2!=state)
dp[row][state2]+=dp[row][state];
return ;
}
if(!(state&(1<<col)) && !(state&(1<<(col+1))))
dfs2(row,state,col+2,state2+(1<<col) + (1<<(col+1)));
dfs2(row,state,col+1,state2);
}
void gao(){
int i,j;
dp[0][(1<<w)-1]=1;
for(i=0;i<h;i++){
for(j=0;j<(1<<w);j++)
if(dp[i][j])
dfs1(i,j,0,0);
for(j=(1<<w)-1;j>=0;j--)
if(dp[i+1][j])
dfs2(i+1,j,0,j);
}
}
int main(){
while(scanf("%d%d",&h,&w)!=EOF && h+w){
int temp;
if(h<w){
temp=h;h=w;w=temp;
}
memset(dp,0,sizeof(dp));
gao();
printf("%I64d\n",dp[h][(1<<w)-1]);
}
return 0;
}

poj 2411 新写法的更多相关文章

  1. poj 1703 Find them, Catch them 【并查集 新写法的思路】

    题目地址:http://poj.org/problem?id=1703 Sample Input 1 5 5 A 1 2 D 1 2 A 1 2 D 2 4 A 1 4 Sample Output N ...

  2. poj 2411 Mondriaan&#39;s Dream 【dp】

    题目:id=2411" target="_blank">poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然 ...

  3. 《精通Matlab神经网络》例10-16的新写法

    <精通Matlab神经网络>书中示例10-16,在创建BP网络时,原来的写法是: net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsi ...

  4. 状压DP POJ 2411 Mondriaan'sDream

    题目传送门 /* 题意:一个h*w的矩阵(1<=h,w<=11),只能放1*2的模块,问完全覆盖的不同放发有多少种? 状态压缩DP第一道:dp[i][j] 代表第i行的j状态下的种数(状态 ...

  5. [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}

    IOS数组.字典.NSNumber 新写法—— @[].@{}   //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...

  6. Poj 2411 Mondriaan's Dream(压缩矩阵DP)

    一.Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, ...

  7. Mondriaan's Dream POJ - 2411

    Mondriaan's Dream POJ - 2411 可以用状压dp,但是要打一下表.暴力枚举行.这一行的状态.上一行的状态,判断如果上一行的状态能转移到这一行的状态就转移. 状态定义:ans[i ...

  8. poj 2411 Mondriaan's Dream(状态压缩dP)

    题目:http://poj.org/problem?id=2411 Input The input contains several test cases. Each test case is mad ...

  9. poj 2411 Mondriaan's Dream 轮廓线dp

    题目链接: http://poj.org/problem?id=2411 题目意思: 给一个n*m的矩形区域,将1*2和2*1的小矩形填满方格,问一共有多少种填法. 解题思路: 用轮廓线可以过. 对每 ...

随机推荐

  1. Linux Shell脚本编程--nc命令使用详解

    linux nc命令使用详解     功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>] ...

  2. 数据库中的索引Index

    索引就像一本书的目录,而书中的索引是对一个词语的列表,其中注明了包含各个词的页码.数据库中的索引 是某一个表中一列或者若干列值的集合和相应的只想表中物理标识这些值的数据页的逻辑指针清单. 索引的作用: ...

  3. 【转】vlc android 代码编译

    转自:http://blog.csdn.net/asircao/article/details/7734201 系统:ubuntu12.04代码:git://git.videolan.org/vlc- ...

  4. iOS tableView的图片缓存异步载入

    1.建立一个viewController. .h文件实现UIScrollViewDelegate和UITableViewDelegate,并声明ICTableViewDelegate(用来实现图片有缓 ...

  5. C语言获取系统当前时间转化成时间字符串

    因为保存的文件须要加上保存的时间,所以须要一个函数来将系统当前时间获取出来,同一时候转换成时间字符串.详细的时间代码例如以下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  6. Swift学习之类和结构体的创建

    随着一步步的学习,学习到的新知识越来越多了,不管是新的还是旧的,都禁不住时间的堆积,再熟悉的知识点时间久了都会渐渐的忘记,也许这就是人们生活中一种潜在的惰性吧,看似非常熟悉的东西,等到真正要用的时候, ...

  7. (转)浅谈ASP.NET报表控件

    项目中有报表图形化的需求, 于是开始在网上找第三方chart控件.因时间紧迫,大至确定了几个候选:一.Office带的OWC控件:二.ComponentOne:三.Web Chart.本文将讲解ASP ...

  8. (转) int argc, char* argv[] 的用法

    int main(int argc, char* argv[]) 這兩個參數的作用是什麼呢?argc 是指命令行輸入參數的個數,argv存儲了所有的命令行參數.假如你的程式是hello.exe,如果在 ...

  9. QT皮肤框架-TQUI

    本皮肤框架的相关文档,请在附件中下载,包括测试程序源码,帮助文档.相关文档可到我的百度网盘中下载,或者在本贴附件中下载. 百度网盘地址:TQUI-V1.0项目说明及测试程序源码 项目更新说明:---- ...

  10. Objective-C中的property

    property可以被声明的位置 property可以在类的interface section和class extension以及protocol中被声明 property的可见性 Objective ...