题目大意

给定一个N*M大小的矩形,要求你用1*2和2*2(缺个角)的砖块把矩形铺满(不能重叠),问总共有多少种铺法?

题解

受POJ2411的影响,怎么都没想到3,4,5,6这几种情况该怎么放置,看了网上大牛的解题报告和代码(真是不好的习惯,可是太弱了就是想不出咋办%>_<%)之后豁然开朗~~~~

规模比较小,所以用状态压缩DP来搞,是POJ2411加强版。有以下几种铺法:

##     #.     ##    ##     #.   .#
.. #. #. .# ## ##
1 2 3 4 5 6
还有一种情况就是不放~~~
我们依然是枚举出合法的当前行以及上一行,不过这里要比POJ2411稍微麻烦点,因为1,3,4,5,6这五种情况当前列的放置会影响后面一列的放置,
所以我们还需要用两个变量来记录是否对下一行有影响,然后就是根据这两个变量的情况进行相应的砖块放置。

代码:

纯模仿。。。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define MAXN 10
typedef long long LL;
LL dp[MAXN][1<<MAXN];
int n,m;
void dfs(int step,int s1,int s2,int u1,int u2,int line)
{
if(step==m)
{
if(!u1&&!u2) dp[line][s2]+=dp[line-1][s1];
return;
}
if(!u2)
{
if(!u1)
{
dfs(step+1,s1<<1,s2<<1|1,0,0,line);
dfs(step+1,s1<<1,s2<<1|1,1,0,line);
dfs(step+1,s1<<1,s2<<1|1,0,1,line);
}
dfs(step+1,(s1<<1|1)-u1,s2<<1|1,0,1,line);
dfs(step+1,(s1<<1|1)-u1,s2<<1|1,1,1,line);
}
if(!u1)dfs(step+1,s1<<1,s2<<1|u2,1,1,line);
dfs(step+1,(s1<<1|1)-u1,s2<<1|u2,0,0,line);
}
int main ()
{
while(scanf("%d%d",&n,&m)!=EOF)
{ memset(dp,0,sizeof(dp));
dp[0][(1<<m)-1]=1;
for(int i=1; i<=n; i++)
dfs(0,0,0,0,0,i);
printf("%I64d\n",dp[n][(1<<m)-1]);
}
return 0;
}

SGU131 - Hardwood floor(状态压缩DP)的更多相关文章

  1. HOJ 2226&POJ2688 Cleaning Robot(BFS+TSP(状态压缩DP))

    Cleaning Robot Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4264 Accepted: 1713 Descri ...

  2. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  3. POJ 3254 Corn Fields(状态压缩DP)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Descr ...

  4. [知识点]状态压缩DP

    // 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...

  5. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  6. DP大作战—状态压缩dp

    题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...

  7. 状态压缩dp问题

    问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...

  8. BZOJ-1226 学校食堂Dining 状态压缩DP

    1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...

  9. Marriage Ceremonies(状态压缩dp)

     Marriage Ceremonies Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

随机推荐

  1. ppshu

    全部书籍已经下载完毕! http://3cvpkfx4gdnkcduj.onion/ https://3cvpkfx4gdnkcduj.onion.cab/ https://3cvpkfx4gdnkc ...

  2. MCM试题原文及翻译 AB题 2014美国数学建模竞赛

    MCM试题原文及翻译 AB题 2014美国数学建模竞赛 原创翻译,如有瑕疵,敬请谅解. 转载请注明:过客小站 » MCM试题原文及翻译 AB题 2014美国数学建模竞赛 PROBLEM A: The  ...

  3. -webkit-text-size-adjust: none;该如何处理

    -webkit-text-size-adjust: none; 在中文版Chrome里面,网页CSS里所有小于12px的字体设置都无效,最终将显示12px.这样弄的本意可能 是好的,因为中文一旦小于1 ...

  4. OpenStack 部署运维实战

    http://www.ibm.com/developerworks/cn/cloud/library/1408_zhangxl_openstack/#icomments 本文为您介绍了网易公司基于 O ...

  5. nginx的负载均衡和反响代理配置

    4.        负载均衡配置 nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 另外 ...

  6. jquery的ajax向后台servlet传递json类型的多维数组

    后台运行结果:                                                                                      前台运行结果: ...

  7. Struts-2.3.24.1官方例子-struts2-blank

    一.配置文件 1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id=&qu ...

  8. POJ2533——Longest Ordered Subsequence(简单的DP)

    Longest Ordered Subsequence DescriptionA numeric sequence of ai is ordered if a1 < a2 < ... &l ...

  9. 1003. Parity(并查集)

    1003 看篇国家论文 <从<parity>的解法谈程序优化> 对于区间i,j 如果用sum[i],sum[j]来表示到i的1的个数的奇偶性 那么仔细想下 sum[i-1] 若 ...

  10. 3月下旬剩余poj题解

    poj1700 数学推导+简单dp poj2390 水题不说什么了 poj3260 先对找的钱做完全背包,在对能付的钱做多重背包,注意这道题能付的钱数的上界 poj2516 裸的最小费用最大流了没什么 ...