poj2411铺砖——状压DP
题目:http://poj.org/problem?id=2411
状态压缩,一行的状态记为一个二进制数,从上往下逐行DP,答案输出最后一行填0的方案数。
代码如下:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int h,w,s[2050],ts,up;
long long f[15][2050];
void init(int up)
{
ts=0;
for(int i=0;i<=up;i++)
{
int r,k=0,x=i,t=0;
bool flag=0;
while(t<w)
{
r=x%2;
if(r)
{
if(k%2==1)
{
flag=1;
break;
}
else k=0;
}
else k++;
x/=2;
t++;
}
if(!flag&&(k%2)==0)s[++ts]=i;
}
return;
}
int main()
{
while(scanf("%d%d",&h,&w)==2)
{
if(!h&&!w)return 0;
if(h==1)
{
if(w%2==0)printf("1\n");
else printf("0\n");
continue;
}
memset(f,0,sizeof f);
up=(1<<w)-1;
init(up);
for(int j=1;j<=ts;j++)f[1][s[j]]++;//
for(int i=2;i<=h;i++)
for(int j=0;j<=up;j++)
for(int k=0;k<=up;k++)
if(!(j&k))
{
int tmp=(j|k);
bool flag=0;
for(int l=1;l<=ts;l++)
if(tmp==s[l]){flag=1;break;}
if(flag)f[i][k]+=f[i-1][j];
}
printf("%lld\n",f[h][0]);//0!
}
return 0;
}
poj2411铺砖——状压DP的更多相关文章
- POJ2411骨牌覆盖——状压dp
题目:http://poj.org/problem?id=2411 状压dp.注意一下代码中标记的地方. #include<iostream> #include<cstdio> ...
- POJ 2411 Mondriaan's Dream:网格密铺类 状压dp
题目链接:http://poj.org/problem?id=2411 题意: 给你一个n*m的网格 (1<=n,m<=11) ,往里面铺1*2或2*1的砖块,问你铺完这个网格有多少种不同 ...
- poj 2411 Mondriaan's Dream 骨牌铺放 状压dp
题目链接 题意 用\(1\times 2\)的骨牌铺满\(H\times W(H,W\leq 11)\)的网格,问方案数. 思路 参考focus_best. 竖着的骨牌用\(\begin{pmatri ...
- POJ 3254 Corn Fields:网格密铺类 状压dp
题目链接:http://poj.org/problem?id=3254 题意: 给你一片n*m的耕地,你可以在上面种玉米.但是其中有一些地方是荒芜的,不能种植.并且种植玉米的地方不能相邻.问你在这片地 ...
- poj2411 Mondriaan's Dream[简单状压dp]
$11*11$格子板上铺$1*2$地砖方案.以前做过?权当复习算了,毕竟以前学都是浅尝辄止的..常规题,注意两个条件:上一行铺竖着的则这一行同一位一定要铺上竖的,这一行单独铺横的要求枚举集合中出现连续 ...
- [Poj2411]Mondriaan's Dream(状压dp)(插头dp)
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 18096 Accepted: 103 ...
- [poj2411] Mondriaan's Dream (状压DP)
状压DP Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One nigh ...
- POJ2411 Mondriaan's Dream 【状压dp】
没错,这道题又是我从LZL里的博客里剽过来的,他的题真不错,真香. 题目链接:http://poj.org/problem?id=2411 题目大意:给一个n * m的矩形, 要求用 1 * 2的小方 ...
- poj2411 Mondriaan's Dream (轮廓线dp、状压dp)
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17203 Accepted: 991 ...
随机推荐
- Windows 10正式版历代记:Version 1709、Build 16299都是什么鬼?
Windows 10免费用!创意者更新秋季版激活秘籍 2017年10月中下旬,微软面向正式版用户推送了Windows 10创意者更新秋季版.这是自发布以来,Windows 10的第五个大版本. 在这篇 ...
- 简述Java异常处理机制及其应用
异常处理机制可以从两个方面来描述,当一个Java程序违反了Java语义规范时,JVM虚拟机就会抛出一个异常,比如说当遇到null时,会抛出一个NullPointerException,当遇到下标越界的 ...
- 【demo练习四】:WPF用户控件案例
首先,新建vs中“用户控件(WPF)”,右键项目名 =>"添加"按钮 => 选择“新建项”. 然后选择“用户控件(WPF)” => 起名字 => 点击“添加 ...
- 018 nginx与第三模块整合[一致性哈希模块整合]
nginx第三方模块官网:http://wiki.nginx.org/HttpUpstreamConsistentHash nginx第三方模块下载地址:https://github.com/repl ...
- 【CF830C】Bamboo Partition 分块
[CF830C]Bamboo Partition 题解:给你n个数a1,a2...an和k,求最大的d使得$\sum\limits_{i=1}^n((d-a[i] \% d) \% d) \le k$ ...
- Django的标准库django.contrib包介绍(转)
Django.contrib是啥? 1.它是一个强大的功能包,是Django的标准库.2.Django的标准库存放在 django.contrib 包中.每个子包都是一个独立的附加功能包. 这些子包一 ...
- [转]Struts form传值
Struts form传值 大约三四个月没用过struts框架,突然想拾起来,却发现好多都忘了.出现传值传不过来的问题.没办法,上网查了一下,看见了一位老师的帖子,总结的很好.特此转载与分享,文末附链 ...
- php总结3——基本函数、流程控制中的循环
3.1 php基本函数(数学.日期.字符串) 数学函数:max mixed max(number $arg1,number $arg2,……) 求一组数据中的最大值 m ...
- curl下载安装
curl下载地址 https://curl.haxx.se/download.html 选择windows generic 下的 下载安装 安装完后解压配置系统环境变量 CURL_HOME ...
- java和js互调 拨打电话
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...