题意

Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行\((1 \leq M \leq 12, 1 \leq N \leq 12)\),每一格都是一块正方形的土地。FJ打算在牧场上的某几格土地里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当的贫瘠,不能用来放牧。并且,奶牛们喜欢独占一块草地的感觉,于是FJ不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。当然,FJ还没有决定在哪些土地上种草。 作为一个好奇的农场主,FJ想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择。当然,把新的牧场荒废,不在任何土地上种草,也算一种方案。请你帮FJ算一下这个总方案数。

分析

状压裸题。

就每行建状态\(f(i,s)\)表示\(i\)行种草状态为\(s\)的方案数即可。

看到Farmer John和他的奶牛的一般都是水题。

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<algorithm>
#include<bitset>
#include<cassert>
#include<ctime>
#include<cstring>
#define rg register
#define il inline
#define co const
template<class T>il T read()
{
rg T data=0;
rg int w=1;
rg char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
w=-1;
ch=getchar();
}
while(isdigit(ch))
{
data=data*10+ch-'0';
ch=getchar();
}
return data*w;
}
template<class T>T read(T&x)
{
return x=read<T>();
}
using namespace std;
typedef long long ll; co int MAXN=12,mod=100000000;
int m,n;
int mp[MAXN],f[MAXN][1<<MAXN];
int ans; int add(int x,int y)
{
x+=y;
return x>=mod?x-mod:x;
} void dp()
{
for(int i=mp[0];i>=0;i=!i?-1:(i-1)&mp[0])
if((i & (i >> 1)) == 0)
f[0][i]=1;
for(int i=1;i<m;++i)
for(int j=mp[i-1];j>=0;j=!j?-1:(j-1)&mp[i-1])
if(f[i-1][j])
for(int k=mp[i];k>=0;k=!k?-1:(k-1)&mp[i])
if((j & k) == 0 && (k & (k >> 1)) == 0)
f[i][k]=add(f[i][k],f[i-1][j]);
for(int i=mp[m-1];i>=0;i=!i?-1:(i-1)&mp[m-1])
ans=add(ans,f[m-1][i]);
} int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
read(m);read(n);
for(int i=0;i<m;++i)
for(int j=0;j<n;++j)
mp[i]=mp[i]<<1|read<int>();
dp();
printf("%d\n",ans);
return 0;
}

最新文章

  1. icomoon图标的使用
  2. ActiveMQ的介绍及使用实例.
  3. 新手的第一个phonegap Android应用
  4. cacti监控windows服务器
  5. 关于GameObject.activeInHierarchy,activeSelf,SetActive
  6. MySQL 体系架构
  7. 简单的信誉算法 js处理
  8. WAD Forwarder版USB Loader的安装和运行
  9. css3之3D翻牌效果
  10. HDU 6035---Colorful Tree(树形DP)
  11. 最短路之Floyd算法
  12. win10 uwp 打电话
  13. 【转】地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
  14. SmartSql For Asp.Net Core 最佳实践
  15. jTimer
  16. Linux 测试常用命令
  17. 在delphi中XLSReadWriteII.组件的应用实例(1)
  18. Java 范例 - 字节处理
  19. Java Scanner学习记录
  20. solr 6.6 基础环境搭建 (一)

热门文章

  1. Microsoft&#39;s OWIN implementation, the Katana project
  2. angular-cli 工程中使用scss文件
  3. web微信开发总结
  4. C++函数参数中的省略号
  5. bzoj 4627 值域线段树
  6. NEU 1496 Planar map 计算几何,点到线段距离 难度:0
  7. 【51nod-1009】数字1的数量
  8. 网页宽高clientWidth clientHeight获得数值不对的问题
  9. 一张图带你了解OKhttp框架
  10. 联想北研实习生面试-嵌入式Linux研发工程师