题目:http://poj.org/problem?id=2411

状压dp。注意一下代码中标记的地方。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,lm;
long long d[][<<],ans;
bool list[<<];
void pre()
{
memset(list,,sizeof list);
for(int i=;i<lm;i++)
{
bool flag=;
int k=,u=i;//////
while(++k<=m)
{
if(!(u&))
{
int ct=;
while(((u>>)&)==&&k+<=m)
{
k++;u>>=;ct++;
}
if(ct%)
{
flag=;break;
}
}
u>>=;//////
}
if(!flag)list[i]=;
}
}
int main()
{
while()
{
scanf("%d%d",&n,&m);
if(!n&&!m)return ;
if(n==)
{
printf("%d\n",!(m%));
continue;
}
lm=<<m;
pre();
memset(d,,sizeof d);
for(int i=;i<lm;i++)
if(list[i])
d[][i]=;
for(int i=;i<n;i++)
for(int j=;j<lm;j++)
for(int k=;k<lm;k++)
if(!(k&j)&&list[k|j])
d[i][j]+=d[i-][k];
ans=;
for(int k=;k<lm;k++)
if(list[k])ans+=d[n-][k];//////最后一行只能全0!
printf("%lld\n",ans);
} }

POJ2411骨牌覆盖——状压dp的更多相关文章

  1. 棋盘覆盖 状压DP+矩阵快速幂

    题意:有一个m 行n 列的矩形方格棋盘,1 < = m< = 5,1=< n< =10^9,用1*2 的骨牌(可横放或竖放)完全覆盖,骨牌不能重叠,有多少种不同的覆盖的方法.你 ...

  2. poj2411铺砖——状压DP

    题目:http://poj.org/problem?id=2411 状态压缩,一行的状态记为一个二进制数,从上往下逐行DP,答案输出最后一行填0的方案数. 代码如下: #include<iost ...

  3. [JZOJ3521]道路覆盖--状压DP

    题目链接 略略略 分析 首先一看到使得最低的高度最高就想到了二分,于是就转化成了一个是否可行的问题 发现这个\(k\)都很小,考虑使用状态压缩DP 但是我一开始发现似乎并不好设计状态...如果这个\( ...

  4. 多米诺骨牌放置问题(状压DP)

    例题: 最近小A遇到了一个很有趣的问题: 现在有一个\(n\times m\)规格的桌面,我们希望用\(1 \times 2\)规格的多米诺骨牌将其覆盖. 例如,对于一个\(10 \times 11\ ...

  5. poj2411 Mondriaan's Dream (轮廓线dp、状压dp)

    Mondriaan's Dream Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17203   Accepted: 991 ...

  6. 【BZOJ4560】[JLoi2016]字符串覆盖 KMP+状压DP

    [BZOJ4560][JLoi2016]字符串覆盖 Description 字符串A有N个子串B1,B2,…,Bn.如果将这n个子串分别放在恰好一个它在A中出现的位置上(子串之间可以重叠)这样A中的若 ...

  7. [Poj2411]Mondriaan's Dream(状压dp)(插头dp)

    Mondriaan's Dream Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 18096   Accepted: 103 ...

  8. POJ2411 Mondriaan's Dream 【状压dp】

    没错,这道题又是我从LZL里的博客里剽过来的,他的题真不错,真香. 题目链接:http://poj.org/problem?id=2411 题目大意:给一个n * m的矩形, 要求用 1 * 2的小方 ...

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

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

随机推荐

  1. PaodingAnalysis 提示 "dic home should not be a file, but a directory"

    Exception in thread "main" net.paoding.analysis.exception.PaodingAnalysisException: dic ho ...

  2. operator diag-up setting

  3. File storage location distribution in firmware using binwalk

    tool function: Binwalk is a fast, easy to use tool for analyzing, reverse engineering, and extractin ...

  4. 获取URL的数据

    <!doctype html><html><head><meta charset="utf-8"><meta name=&qu ...

  5. sgu 121. Bridges painting 列举情况 难度:1

    121. Bridges painting time limit per test: 0.25 sec. memory limit per test: 4096 KB New Berland cons ...

  6. ansible role[初稿]

    ansible roles role_name/ files/:存储由copy或script等模块调用的文件: tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task:其它 ...

  7. 【LeetCode 235_二叉搜索树】Lowest Common Ancestor of a Binary Search Tree

    解法一:递归 TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if (root == NULL | ...

  8. 如何将jar包添加到maven本地仓库

    有时候jar包在maven仓库里找不着,那么就需要直接下载jar包,然后添加到本地仓库区. 那么如何添加呢? 如: <dependency> <groupId>com.mide ...

  9. Vue.js 源码学习笔记 -- 分析前准备1 -- vue三大利器

    主体 实例方法归类:   先看个作者推荐, 清晰易懂的  23232 简易编译器   重点: 最简单的订阅者模式 // Observer class Observer { constructor (d ...

  10. Python学习(004)-字典{}

    特点: 无序状态 键唯一   不可变类型:字符串.整型.元组 可变类型:列表.字典   字典创建 第一种: dic1={','sex':'man'} print(dic1['name']) ----- ...