$POJ2411\ Mondriaan's\ Dream$ 状压+轮廓线$dp$
Sol
首先状压大概是很容易想到的
一般的做法大概就是枚举每种状态然后判断转移
但是这里其实可以轮廓线dp
也就是从上到下,从左到右地放方块
假设我们现在已经放到了$(i,j)$这个位置
那么影响这个位置怎么填的其实就只有这个位置上面的位置到它左边的位置这一段的状态
于是把这一段从上到下从左往右状压起来,1表示被覆盖了,0表示没被覆盖
$f[i][j][s]$表示填到第$(i,j)$,$(i-1,j)$到$(i,j-1)$的状态为s 的方案数
转移:
原则是要把现在考虑的一行的上一行填满,不然它就永远不会被覆盖了
若$(i-1,j)=0$,即上面的格子没放,这时只能放竖起来的方块
若$(i-1,j)=1,(i,j-1)=0$即上面的格子放了,左边的格子没放,这时可以放横着的方块
若$(i-1,j)=1$即上面的格子放了,这时可以不放方块
最后要注意第一行的状态
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#define Ri register int
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int n,m;
ll f[][<<];
int main()
{
while()
{
scanf("%d%d",&n,&m);
if(!n||!m)break;
mem(f,);f[][(<<m)-]=;
for(Ri i=;i<=n;i++)
for(Ri j=,t=m*(i-)+j;j<=m;j++,t++)
for(Ri k=;k<(<<m);k++)
if(f[t-][k])
{
ll hhh=f[t-][k];
if(i> && !(k&))
f[t][(k>>)|(<<(m-))]+=hhh;
if(j> && !(k&(<<(m-))) && (k&))
f[t][(k>>)|(<<(m-))|(<<(m-))]+=hhh;
if(i==||k&)
f[t][k>>]+=hhh;
}
printf("%lld\n",f[n*m][(<<m)-]);
}
return ;
}
随机推荐
- python3中的zip函数
zip函数的作用: zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象. 这个可迭代对象可以使用循环的方式列出其元素 若多个可迭代对象的长 ...
- 从DataTable中删除不被控件支持的字段类型
DataTable dt = DB.GetDataTable(sql); //从dt中删除不被控件支持的字段类型 for (int ...
- 3331: [BeiJing2013]压力
3331: [BeiJing2013]压力 LCA+树上差分,和之前类似的题差不多,就是多了个v-dcc缩点,唯一要注意的就是判断是否是割点,对于不是割点的点,如果他是起点或重点,ans++,和差分没 ...
- Postman使用入门
https://jingyan.baidu.com/article/0f5fb09907e3046d8334ea2f.html Postman测试管理的单位是测试集(Collections),测试集内 ...
- 测试代码的执行时间魔法方法%time和%timeit
对于规模更大.运行时间更长的数据分析应用程序,你可能会希望测试一下各个部分或函数调用或语句的执行时间.你可能会希望了解某个复杂计算过程中到底是哪些函数占用的时间最多.幸运的是,在开发和测试代码的过程中 ...
- centos6 名字服务dnsmasq配置
1 主机名配置 主机hd1配置(后面配置为名字服务器) [grid_hd@hd1 Desktop]$ cat /etc/sysconfig/network NETWORKING=yes HOSTNAM ...
- 根据IP定位用户所在城市信息
http://www.9958.pw/post/city_ip 1.调用新浪IP地址库 新浪提供了开放的IP地址库数据供开发者调用,调用地址: http://int.dpool.sina.com.cn ...
- 原生js用div实现简单的轮播图
文章地址 https://www.cnblogs.com/sandraryan/ 原生js实现轮播图. 打开页面图片自动轮播,点击prev next按钮切换到上/下一张图片,点击1-5切换到对应图片. ...
- poj 3601Tower of Hanoi
Tower of Hanoi Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 1895 Accepted: 646 De ...
- CSS中常用的简写模式
一.font属性简写 font-style:字体样式 normal 默认值.浏览器显示一个标准的字体样式. italic 浏览器会显示一个斜体的字体样式. oblique 浏览器会显示一个倾斜的字体样 ...