【POJ2411】Mondriaan's Dream(轮廓线DP)
【POJ2411】Mondriaan's Dream(轮廓线DP)
题面
题解
这题我会大力状压!!!
时间复杂度大概是\(O(2^{2n}n^2)\),设\(f[i][S]\)表示当前第\(i\)行向下伸展出去的状态为\(S\)
那么每次枚举一下当前行的放法,进行转移就好了。
然后就长成了这个样子(不要在意我强行缩减代码长度)
尽管这不是我们本题的重点,然而我还是放份代码
#include<cstdio>
#include<cstring>
int n,m;long long f[12][1<<11];
int main()
{
while(scanf("%d%d",&n,&m))
{
if(n==0)break;memset(f,0,sizeof(f));f[0][0]=1;
for(int i=1;i<=n;++i)
for(int j=0;j<(1<<m);++j)
for(int k=0;k<(1<<m);++k)
{
if(j&k)continue;
int t=j|k;bool fl=true;
for(int l=0;l<m;++l)
if(!(t&(1<<l)))
{
if(t&(1<<(l+1))){fl=false;break;}
if(l==m-1){fl=false;break;}
t|=1<<l;t|=1<<(l+1);
}
if(fl)f[i][k]+=f[i-1][j];
}
printf("%lld\n",f[n][0]);
}
}
标题里都写了是轮廓线\(dp\),那么我们就来轮廓线一下?
我们从上往下,从左往右依次放东西。假设当前填到了位置\((i,j)\)
那么对于当前以及接下来的状态有影响的只有\((i,1..j-1)\)和\((i-1,j..m)\)
一共\(m\)个位置,那么我们把这些位置按照从上往下从左往右的顺序压缩。
考虑如何转移:
1.作为一个竖着放的矩形的下半部分,那么需要\((i-1,j)\)未被覆盖。
2.作为一个横着放的矩形的右半部分,那么需要\((i,j-1)\)未被覆盖。
3.啥都不干,等着后面的格子来覆盖当前位置。
当然,每一项转移都要限制,比如如果当前位置的正上方的位置是空的,那么必须竖着覆盖。
接下来就是大力的转移咯。
#include<cstdio>
#include<cstring>
int n,m;long long f[122][1<<11];
int main()
{
while(scanf("%d%d",&n,&m)&&n)
{
memset(f,0,sizeof(f));f[0][(1<<m)-1]=1;
for(int i=1;i<=n;++i)
for(int j=1,nw=i*m-m+j;j<=m;++j,++nw)
for(int k=0;k<(1<<m);++k)
if(f[nw-1][k])
{
if(i>1&&!(k&1))
f[nw][(k>>1)|(1<<(m-1))]+=f[nw-1][k];
if(j>1&&!(k&(1<<(m-1)))&&(k&1))
f[nw][(k>>1)|(1<<(m-1))|(1<<(m-2))]+=f[nw-1][k];
if(((k&1)||i==1))
f[nw][k>>1]+=f[nw-1][k];
}
printf("%lld\n",f[n*m][(1<<m)-1]);
}
}
【POJ2411】Mondriaan's Dream(轮廓线DP)的更多相关文章
- POJ2411 Mondriaan's Dream 轮廓线dp
第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节. 题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m<=11)的棋盘,问填满它有多少 ...
- Mondriaan's Dream 轮廓线DP 状压
Mondriaan's Dream 题目链接 Problem Description Squares and rectangles fascinated the famous Dutch painte ...
- poj 2411 Mondriaan's Dream 轮廓线dp
题目链接: http://poj.org/problem?id=2411 题目意思: 给一个n*m的矩形区域,将1*2和2*1的小矩形填满方格,问一共有多少种填法. 解题思路: 用轮廓线可以过. 对每 ...
- poj2411 Mondriaan's Dream (轮廓线dp、状压dp)
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17203 Accepted: 991 ...
- $POJ2411\ Mondriaan's\ Dream$ 状压+轮廓线$dp$
传送门 Sol 首先状压大概是很容易想到的 一般的做法大概就是枚举每种状态然后判断转移 但是这里其实可以轮廓线dp 也就是从上到下,从左到右地放方块 假设我们现在已经放到了$(i,j)$这个位置 那么 ...
- POJ2411 Mondriaan's Dream 题解 轮廓线DP
题目链接:http://poj.org/problem?id=2411 题目大意 给你一个 \(n \times m (1 \le n,m \le 11)\) 的矩阵,你需要用若干 \(1 \time ...
- poj2411 Mondriaan's Dream【状压DP】
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 20822 Accepted: 117 ...
- [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]
$11*11$格子板上铺$1*2$地砖方案.以前做过?权当复习算了,毕竟以前学都是浅尝辄止的..常规题,注意两个条件:上一行铺竖着的则这一行同一位一定要铺上竖的,这一行单独铺横的要求枚举集合中出现连续 ...
- POJ1185 炮兵阵地 和 POJ2411 Mondriaan's Dream
炮兵阵地 Language:Default 炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 34008 Accepted ...
随机推荐
- springboot+elasticsearch实现全局检索
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...
- Azure web site和web job的config文件加密方式
1.分析 由于Azure Web AppService平台的特殊性,所以在C#中原先的config加密方法DataProtectionConfigurationProvider和RSAProtecte ...
- Docker Zero Deployment and Secrets (二)
一. 健康检测: (1)定义检测信息如下(案例,在Dockerfile中定义) FROM alpine:3.6 ... HEALTHCHECK --interval=30s \ --timeo ...
- ReLU——Deep Sparse Rectifier Neural Networks
1. 摘要 ReLU 相比 Tanh 能产生相同或者更好的性能,而且能产生真零的稀疏表示,非常适合自然就稀疏的数据. 采用 ReLU 后,在大量的有标签数据下,有没有无监督预训练模型取得的最好效果是一 ...
- XSS构造技巧
利用字符编码: 百度曾经出过一个XSS漏洞,在一个<script>标签中输出一个变量,其中转义了双引号: var redirectUrl="\";alert(/XSS/ ...
- tar.gz 文件解压 (安装 netbean 时会用到)
sudo tar xvf jdk-7u45-linux-i586.tar.gz -C /usr/lib 参考文章 http://hi.baidu.com/xiaomeng008/item/5e787b ...
- 模块-Memcached、Redis
目录 Mecache 安装 使用 Redis 安装 Python操作Redis 操作模式 连接池 操作 String Hash List Set sort set 其他常用操作 管道 发布订阅 sen ...
- jaxb教程(忘记了过来看看)
链接 原文链接
- 面向对象OO第15次作业总结
面向对象OO第15次作业总结 1.论述测试与正确性论证的效果差异,比较其优缺点测试通过大量测试数据来覆盖测试代码,比较直观,优点在于知道测的是啥,特别直观,缺点在于很难覆盖所有情况.正确性论证从逻辑关 ...
- SpringMVC 常用注释
@Controller Controller控制器是通过服务接口定义的提供访问应用程序的一种行为 @Repository Dao层的标志 @RequestMapping 标注控制层函数的访问路径 ...