POJ2411
题目大意:一个宽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的更多相关文章
- 状态压缩dp(hdu2167,poj2411)
hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167 给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大 要求任意两个选中的数字 ...
- 【POJ2411】Mondriaan's Dream(轮廓线DP)
[POJ2411]Mondriaan's Dream(轮廓线DP) 题面 Vjudge 题解 这题我会大力状压!!! 时间复杂度大概是\(O(2^{2n}n^2)\),设\(f[i][S]\)表示当前 ...
- 【poj2411】 Mondriaan's Dream
http://poj.org/problem?id=2411 (题目链接) 题意 一个$n*m$的网格,用$1*2$的方块填满有多少种方案. Solution 轮廓线dp板子.按格dp,对上方和左方的 ...
- 【poj2411】Mondriaan's Dream 状态压缩dp
AC传送门:http://vjudge.net/problem/POJ-2411 [题目大意] 有一个W行H列的广场,需要用1*2小砖铺盖,小砖之间互相不能重叠,问有多少种不同的铺法? [题解] 对于 ...
- POJ2411 状态压缩dp
POJ2411 http://poj.org/problem?id=2411
- HihoCoder第九周 状态压缩 二 与POJ2411总结
在此我向各位博友求助,特别想知道除了HihoCoder上面的结果要对1e9+7取余之外,这两道题还有什么其他的问题,都是骨牌覆盖问题,都是状态压缩+dp,为什么我能过poj2411的程序过不了Hiho ...
- [poj2411] Mondriaan's Dream (状压DP)
状压DP Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One nigh ...
- POJ2411 Mondriaan's Dream
Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, af ...
- POJ2411 Mondriaan's Dream 轮廓线dp
第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节. 题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m<=11)的棋盘,问填满它有多少 ...
随机推荐
- iframe 内显示的网页 只显示改网页的某一部分!
使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容) 有些时候我们并不需要显示iframe标签属性src指定的目标网页的所有内容,往往只需要显示某一特定区域.现有两种实现方法提供 ...
- csu 1809 Parenthesis
题目见此 分析,把'('当成1, ')'当成-1, 计算前缀和sum. 记交换括号左边的序号为u, 右边为v,讨论左右括号: 1.s[u] == '(' && s[v] == ')' ...
- JVM-并发-Java 内存模型
Java内存模型 (1). 主内存与工作内存 Java内存模型规定了所有的变量都存储在主内存中. 每类线程的变量的主内存副本拷贝,线程对变量的所有操作(读操作,赋值操作等)都必须工作内存中进行,而不能 ...
- The Layout Process on Mac OSX and iOS
First we will recap the steps it takes to bring views on screen with Auto Layout enabled. When you’r ...
- HttpURLConnection发送和接受返回值
URL url = new URL(sb.toString());//请求的地址 HttpURLConnection connection = (HttpURLConnection) url.open ...
- iOS学习之GCD
多线程编程 线程定义:一个CPU执行的CPU命令 列一条无分叉的路径就叫线程. 多线程:执行多个不同的CPU命令 有多条路径. 线程的使用:主线程(又叫作UI线程)主要任务是处理UI事件,显示和刷新U ...
- Zyxel Switch-How to block a fake DHCP server without enabling DHCP snooping?
How to block a fake DHCP server without enabling DHCP snooping? Scenario How to block a fake DHCP se ...
- 12-2 mysql 查询
老师提纲 1. create database test2. drop database test3. create table info( code int primary key, name va ...
- ex26 纠正练习
题目中给出的代码如下: def break_words(stuff): """This function will break up words for us." ...
- 关于 xcode5 真机调试 的 no matching provisioning profiles found
产生原因:在xcode5里面不一定是因为你的真机证书有问题,有可能是因为,项目本来在别的组里有会出现此bug 如果你出现上图的错误,只需要在此项目的***.xcodeproj 文件,然后右键选择“显示 ...