题意:

有一块n*m的土地

0代表不肥沃不可以放牛 1代表肥沃可以放牛

且相邻的草地不能同时放牛

问最多有多少种放牛的方法并对1e8取模

思路:

典型的状压dp 能状态压缩 能状态转移

能状态压缩的题的特点就是只有两种状态

所以用0 1表示两种状态 用位运算判断是否符合条件

然后将前一行的合理状态转移到后一行

最后统计最后一行的状态

dp[i][j]代表第i行以第j种状态放牛时有多少种不同的状态

(c++的语言特性是 封装 继承 多态~)

 /* ***********************************************
Author :Sun Yuefeng
Created Time :2016/10/31 17:59:53
File Name :C.cpp
************************************************ */ #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<bitset>
#include<map>
#include<set>
#include<stack>
#include<vector>
#include<queue>
#include<list>
#define M(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int maxn=<<;
const int mod=1e8;
int dx[]= {,,,-,,-,,-};
int dy[]= {,-,,,-,,,-}; int _map[maxn]; //记录给出的每块地的状态
int st[maxn]; //记录每一行的状态
int dp[][maxn]; bool judge(int x) //判断相邻两位是否同时为1
{
return (x&(x<<));
} bool judge(int x,int y) //判断两位是否同时为1
{
return _map[x]&st[y];
} int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m;
while(cin>>n>>m){
int x;
M(dp,),M(_map,),M(st,);
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
cin>>x;
if(!x)
{
_map[i]+=(<<j); //向图中添加空地
}
}
}
int k=;
for(int i=;i<(<<m);i++) //初始化能不能以i状态放牛
{
if(!judge(i))
{
st[k++]=i;
}
}
for(int i=;i<k;i++) //初始化第一行状态
{
dp[][i]=(!judge(,i));
}
for(int i=;i<n;i++)
{
for(int j=;j<k;j++)
{
if(judge(i,j)) continue; //判断第i行是否能以j的方式放牛
for(int l=;l<k;l++)
{
if(judge(i-,l)) continue; //判断上一行状态
if(!(st[j]&st[l])) //符合题意转移状态
dp[i][j]+=dp[i-][l];
}
}
}
int ans=;
for(int i=;i<k;i++)
{
ans+=dp[n-][i];
ans%=mod;
}
cout<<ans<<endl;
}
return ;
}

[ An Ac a Day ^_^ ] POJ 3254 Corn Fields 状压dp的更多相关文章

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

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

  2. POJ 3254 Corn Fields (状压dp)

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

  3. Poj - 3254 Corn Fields (状压DP)(入门)

    题目链接:https://vjudge.net/contest/224636#problem/G 转载于:https://blog.csdn.net/harrypoirot/article/detai ...

  4. poj 3254 Corn Fields 状压dp入门

    题目链接 题意 在\(M\times N\)的\(0,1\)格子上放东西,只有标记为\(1\)的格子可以放东西,且相邻的格子不能同时放东西.问有多少种放法. 思路 参考:swallowblank. \ ...

  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 (状压入门)

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

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

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

  8. [USACO06NOV]玉米田Corn Fields 状压DP

    题面: 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的 ...

  9. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

随机推荐

  1. 在html中使用javascript显示本地图片的

    <html> <head> <script type="text/javascript"> function getFullPath(obj){ ...

  2. php面试题中的约瑟夫环

    最近忙着做面试题,看到一道题感觉比较有兴趣,查阅相关资料后发现这是一个约瑟夫环的问题. 一群猴子围成一圈,按1,2,3,4,....n一次编号.然后从第1值开始数,数到第m只,把它踢出圈,从它后面再开 ...

  3. IOS7学习之路八(iOS 禁止屏幕旋转的方法)

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { retu ...

  4. java的抽象类和抽象方法(注意查看如何调用抽象类中的非抽象方法)

    抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类.抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类.对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子 ...

  5. Direct2D

    Direct2D Direct2D教程III——几何(Geometry)对象 摘要: 目前博客园中成系列的Direct2D的教程有1.万一的 Direct2D 系列,用的是Delphi 20092.z ...

  6. 12157 - Tariff Plan

      Ampang Communications & Mobile (ACM) provides telecom services for various types of users. Sin ...

  7. 设置代码ios 6添加日历事件No calendar has been set.错误

    查了好多资料,发明还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 在iOS 6做日历事件添加时,来来回回报错,No calendar has been set ...

  8. C# 数据库连接测试以及备份

    现在我们要做一个如图5.1的数据库连接配置,从界面上看有三个功能需要实现:从配置文件中读取数据库连接的相关属性.备份数据库.测试连接. 现在我们就一个一个开始讲解. 图5.1 1.从配置文件中读取数据 ...

  9. ASP.Net MVC C#画图 页面调用

    /////C# 后台代码 public FileContentResult PieChart()        {            TransactionStatisticsBLL bll = ...

  10. maven pom.xml详细介绍,必须留一份

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...