题目大意:

输入n m

接下来n行m列

0表示不能种玉米 1表示能

要求种玉米位置的上下左右四连通区域不能种玉米

输出方案数

Sample Input

2 3
1 1 1
0 1 0

Sample Output

9

Hint

Number the squares as follows:

1 2 3
  4

There are four ways to plant only on one squares (1, 2, 3, or 4), three ways to plant on two squares (13, 14, or 34), 1 way to plant on three squares (134), and one way to plant on no squares. 4+3+1+1=9.

 
#include <bits/stdc++.h>
#define MOD 100000000
using namespace std;
int mir[],may[<<],dp[][<<];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int num=;
for(int i=;i<(<<m);i++)
if((i&(i<<))==) may[num++]=i;
/// 等于0说明符合条件 may[]保存所有可能放置
/// 左移一位后,若不为0,说明有相邻两位同时为1
/// 如 i 为011,则 i<<1 为110,(011&110) = 1 memset(mir,,sizeof(mir));
for(int i=;i<n;i++)
for(int j=;j<m;j++)
{
int tmp; scanf("%d",&tmp);
if(tmp==) mir[i]|=<<j;
/// mir[]可理解为 i 行的镜像拓本
} memset(dp,,sizeof(dp));
for(int i=;i<num;i++)/// 枚举所有可能 判断与拓本是否可匹配
if((mir[]&may[i])==) dp[][may[i]]=;
/// 等于0说明may[i]为该行的可能放置 for(int i=;i<n-;i++) // 枚举各行 从本行推下一行 所以只需到n-1行
for(int j=;j<num;j++) // 枚举所有可能放置
if((mir[i]&may[j])==)/// 当与本行可匹配时
{ // 该放置是本行可能出现的符合条件的放置时
for(int k=;k<num;k++)// 枚举所有可能(下一行的)
if(((mir[i+]&may[k])==)&&((may[k]&may[j])==))
/// 该放置为下一行的可能放置(与下一行的拓本可匹配)
/// 且 与本行的放置可匹配时
dp[i+][may[k]]+=dp[i][may[j]];
}
int ans=;
for(int i=;i<num;i++)// 枚举所有可能放置(最后一行)
ans=ans+dp[n-][may[i]],ans%=MOD;
// 由前往后推 所以只要最后一行存在这种放置的方案
// 则表示这种方案也符合前面所有行的放置
printf("%d\n",ans);
} return ;
}

USACO 2006 November Gold Corn Fields /// 状压 oj23941的更多相关文章

  1. USACO 2006 November Gold Corn Fields

    USACO 2006 November Gold Corn Fields 题目描述: Farmer John has purchased a lush new rectangular pasture ...

  2. 【USACO 2006 November Gold】Corn Fields

    [题目链接] 点击打开链接 [算法] 状压DP [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 12 #def ...

  3. 【POJ3254】Corn Fields 状压DP第一次

    !!!!!!! 第一次学状压DP,其实就是运用位运算来实现一些比较,挺神奇的.. 为什么要发“!!!”因为!x&y和!(x&y)..感受一下.. #include <iostre ...

  4. POJ 3254 Corn Fields (状压入门)

    Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M≤ 12; 1 ≤ N ≤ 12) ...

  5. POJ 1684 Corn Fields(状压dp)

    描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ ...

  6. POJ 3254 - Corn Fields - [状压DP水题]

    题目链接:http://poj.org/problem?id=3254 Time Limit: 2000MS Memory Limit: 65536K Description Farmer John ...

  7. POJ 3254 Corn Fields (状压dp)

    题目链接:http://poj.org/problem?id=3254 给你n*m的菜地,其中1是可以种菜的,而菜与菜之间不能相邻.问有多少种情况. 状压dp入门题,将可以种菜的状态用一个数的二进制表 ...

  8. USACO 2006 November Gold

    POJ 3253 Fence Repair STL堆操作 我想说,STL里堆是我目前见到最蛋疼的操作. #include <cstdio> #include <cstring> ...

  9. [ An Ac a Day ^_^ ] POJ 3254 Corn Fields 状压dp

    题意: 有一块n*m的土地 0代表不肥沃不可以放牛 1代表肥沃可以放牛 且相邻的草地不能同时放牛 问最多有多少种放牛的方法并对1e8取模 思路: 典型的状压dp 能状态压缩 能状态转移 能状态压缩的题 ...

随机推荐

  1. Andriod Unity 调用android函数

    //首先这是一个前沿 //我看了多的资料,还看了近半个小时的 android activity 的讲解 终于打出了apk //接下来开始 //一步一步的跟着我走 1.创建一个android项目或者一个 ...

  2. JAVA javac

    { 用法: javac <options> <source files>其中, 可能的选项包括:  -g                         生成所有调试信息  - ...

  3. 【Codeforces 1148B】Born This Way

    [链接] 我是链接,点我呀:) [题意] 有人要从A地飞向B地,然后从B地飞向C地. 给出A,B地的n.m个航班的出发时间. 已知从A到B的航班都是ta和tb时长到达B.C 只有到达B的时候航班还没起 ...

  4. Vue.js - 路由 vue-router 的使用详解2(参数传递)

    一.使用冒号(:)的形式传递参数 1,路由列表的参数设置 (1)路由列表的 path 是可以带参数的,我们在路由配置文件(router/index.js)里以冒号的形式设置参数. (2)下面样例代码中 ...

  5. fastText一个库用于词表示的高效学习和句子分类

    fastText fastText 是 Facebook 开发的一个用于高效学习单词呈现以及语句分类的开源库. 要求 fastText 使用 C++11 特性,因此需要一个对 C++11 支持良好的编 ...

  6. opencv-角点检测之Harris角点检测

    转自:https://blog.csdn.net/poem_qianmo/article/details/29356187 先看看程序运行截图:   一.引言:关于兴趣点(interest point ...

  7. 如何查看jdk版本和路径

    cmd进入命令提示符,查看jdk版本,输入java -version;查看jdk路径 ,输入set java home.,这个也是默认路径

  8. neo4j 基本概念和Cypher语句总结

    下面是一个介绍基本概念的例子,参考链接Graph database concepts: (1) Nodes(节点) 图谱的基本单位主要是节点和关系,他们都可以包含属性,一个节点就是一行数据,一个关系也 ...

  9. verifier 调试内存泄露

    没啥技术含量,都是老段子了, 这次记下来,只是我想说,我也做过,留个念相. 前置条件,电脑里面必须得有Verifier,有了之后把自己的驱动加进去, WinDBG上双机,然后就可以跑了,跑一段时间就可 ...

  10. nodejs入门安装与调试,mac环境

    install nvm (node version manager) 安装nvm curl -o- https://raw.githubusercontent.com/creationix/nvm/v ...