题目大意:一个宽w高为h的棋盘,现在要用1*2的多米诺骨牌不重叠地覆盖整个棋盘,问有多少种方案。

h<11,w<11

分析:1.h*w若为奇数,则无解。

2.按行处理。处理第i行时,保证前i-1行全部覆盖,当前行的状态为state。

以f[i][state]表示处理到第i行,第i行的状态为state,且前i-1行全部填满的方案数。

f[i][state]=∑f[i-1][state2]

需要统计有哪些state2可以转移到state。这个可以用dfs来预处理出来。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<cstring>
using namespace std;
#define MAXN 2200
vector<int> arr[MAXN];
long long f[][MAXN],h,w,n,ss;
int tt;
void find(int s,int t,int i)
{
if(s==||i>=n){arr[ss].push_back(t);return;}
if(s&)
{
if(s&)
find(s>>,t,i+);
find(s>>,t^(<<i),i+);
}
else
find(s>>,t,i+);
}
int main()
{
n=;
int z=(<<n)-;
for(int i=;i<=z;i++)
{
ss=i;
find(i,z,);
}
while(scanf("%d%d",&h,&w)&&(w||h))
{
memset(f,,sizeof f);
if(w%&&h%)
{printf("0\n");
continue;
}
int z1=(<<w)-;
f[][z1]=;
for(int i=;i<=h;i++)
{
for(int j=;j<=z1;j++)
{
f[i&][j]=;
for(int k=;k<arr[j].size();k++)
{
f[i&][j]+=f[!(i&)][arr[j][k]&z1];
}
}
}
printf("%I64d\n",f[h&][z1]);
}
}

POJ2411的更多相关文章

  1. 状态压缩dp(hdu2167,poj2411)

    hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167 给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大 要求任意两个选中的数字 ...

  2. 【POJ2411】Mondriaan's Dream(轮廓线DP)

    [POJ2411]Mondriaan's Dream(轮廓线DP) 题面 Vjudge 题解 这题我会大力状压!!! 时间复杂度大概是\(O(2^{2n}n^2)\),设\(f[i][S]\)表示当前 ...

  3. 【poj2411】 Mondriaan's Dream

    http://poj.org/problem?id=2411 (题目链接) 题意 一个$n*m$的网格,用$1*2$的方块填满有多少种方案. Solution 轮廓线dp板子.按格dp,对上方和左方的 ...

  4. 【poj2411】Mondriaan's Dream 状态压缩dp

    AC传送门:http://vjudge.net/problem/POJ-2411 [题目大意] 有一个W行H列的广场,需要用1*2小砖铺盖,小砖之间互相不能重叠,问有多少种不同的铺法? [题解] 对于 ...

  5. POJ2411 状态压缩dp

    POJ2411 http://poj.org/problem?id=2411

  6. HihoCoder第九周 状态压缩 二 与POJ2411总结

    在此我向各位博友求助,特别想知道除了HihoCoder上面的结果要对1e9+7取余之外,这两道题还有什么其他的问题,都是骨牌覆盖问题,都是状态压缩+dp,为什么我能过poj2411的程序过不了Hiho ...

  7. [poj2411] Mondriaan's Dream (状压DP)

    状压DP Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One nigh ...

  8. POJ2411 Mondriaan's Dream

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

  9. POJ2411 Mondriaan's Dream 轮廓线dp

    第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节. 题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m<=11)的棋盘,问填满它有多少 ...

随机推荐

  1. spring随手笔记1:constructor-arg

    <bean id="Hello" class="com.ltf.captha.serviceImpl.HelloWorldServiceImpl"> ...

  2. SQLSERVER存储过程基本语法

    一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @us ...

  3. buaaoj230——next_permutation的应用

    题目地址 简单的全排列输出,借用stl中的next_permutation就非常简单了. 关于next_permutation:(备忘,来源网络) /*这是一个求一个排序的下一个排列的函数,可以遍历全 ...

  4. Cache-control使用Cache-control:private学习笔记

    其作用根据不同的重新浏览方式,分为以下几种情况:(1).打开新窗口值为private.no-cache.must-revalidate,那么打开新窗口访问时都会重新访问服务器.而如果指定了max-ag ...

  5. url编码 中文在url参数中传递,在请求头,响应头中传递,是如何编码的呢?

    一定要编码成url的吗?还是url自动把接受的汉字编码,请求头响应头到达之后再自动编码成汉字?这样似乎比较合理哦 先把iso8859-1 转换成 utf-8,在mvc中处理,然后响应的时候在转成iso ...

  6. css2----单行过长的省略处理

    li{ width:300px; white-space:nowrap;表示怎样处理li容器中的空白部分,nowrap表强制不换行,直到文本结束或碰到</br> text-overflow ...

  7. Python学习路程day1

    变量起名: 变量名如果太长,推荐使用下划线来分开,让人看得清晰明白.例:nums_of_alex_girl=19 .或者是驼峰写法,即首字母大写.例:NumOfAlexGf=18 注意:不合法的变量起 ...

  8. js中有趣的闭包(closure)

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  9. python数据结构与算法——队列

    队列结构可以使用数组来模拟,只需要设定头和尾的两个标记 参考自<啊哈> # 按书中的代码会出现索引越界的问题(书中申请了超量的空间) # 尝试令tai初始为len(q)-1则不会出错但少了 ...

  10. bootstrap-9

    图像: bootstrap中有以下几种样式风格: 1.img-responsive:响应式图片,主要针对响应式设计 2.img-rounded:圆角图片 3.img-circle:圆形图片 4.img ...