题目:http://poj.org/problem?id=3254

1.枚举行;

2.把有影响的“放不放牛”加入参数中,用二进制数表示该位置放不放牛,再用十进制数表示二进制数;

3.优美的预处理list;

4.优美的位运算比较二进制。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,list[],cnt,a[],d[][],ans;
const int INF=;
bool b[];
/*计算有多少种合法者 :1431
int list[15][2];
void yu()
{
list[0][0]=1;list[0][1]=1;
list[1][1]=1;list[1][0]=1;
for(int i=2;i<=12;i++)
{
list[i][1]=list[i-2][1]+list[i-1][0];
list[i][0]=list[i-1][1]+list[i-1][0];
}
printf("(%d)",list[12][1]+list[12][0]);
}
*/
int qiu()
{
int s=,r=;
for(int i=m;i;i--)
{
if(b[i])s+=r;
r*=;
}
return s;
}
void yu(int pre)
{
for(int i=pre+;i<=m;i++)
{
b[i]=;
list[++cnt]=qiu();
yu(i);
b[i]=;
}
}
int main()
{
scanf("%d%d",&n,&m);
yu(-);
// for(int i=1;i<=cnt;i++)
// printf("(%d) ",list[i]);
memset(b,,sizeof b);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
scanf("%d",&b[j]);
int r=;
for(int j=m;j;j--)
{
if(b[j])a[i]+=r;
r*=;
}
}
for(int i=;i<=cnt;i++)
if(!((~a[])&list[i]))d[][list[i]]++;
for(int i=;i<=n;i++)
for(int j=;j<=cnt;j++)
{
if((~a[i])&list[j])continue;
for(int k=;k<=cnt;k++)
if((list[j]&list[k])==)
{
// printf("j=%d k=%d\n",list[j],list[k]);
d[i][list[j]]=(d[i][list[j]]+d[i-][list[k]])%INF;
}
}
for(int i=;i<=cnt;i++)
ans=(ans+d[n][list[i]])%INF;
printf("%d",ans);
return ;
}

POJ3254Corn Fields——状态压缩dp的更多相关文章

  1. POJ3254Corn Fields(状态压缩DP入门)

    题目链接 题意:一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻.问有多少种放牛方案(一 ...

  2. POJ 3254 Corn Fields(状态压缩DP)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Descr ...

  3. POJ3254 - Corn Fields(状态压缩DP)

    题目大意 给定一个N*M大小的土地,土地有肥沃和贫瘠之分(每个单位土地用0,1来表示贫瘠和肥沃),要求你在肥沃的单位土地上种玉米,如果在某个单位土地上种了玉米,那么与它相邻的四个单位土地是不允许种玉米 ...

  4. POJ 3254 Corn Fields (状态压缩DP)

    题意:在由方格组成的矩形里面种草,相邻方格不能都种草,有障碍的地方不能种草,问有多少种种草方案(不种也算一种方案). 分析:方格边长范围只有12,用状态压缩dp好解决. 预处理:每一行的障碍用一个状态 ...

  5. POJ Corn Fields 状态压缩DP基础题

    题目链接:http://poj.org/problem?id=3254 题目大意(名称什么的可能不一样,不过表达的意思还是一样的): 种玉米 王小二从小学一年级到现在每次考试都是班级倒数第一名,他的爸 ...

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

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

  7. poj Corn Fields 状态压缩dp。

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5763   Accepted: 3052 Descr ...

  8. POJ 3254 Corn Fields状态压缩DP

    下面有别人的题解报告,并且不止这一个状态压缩题的哦···· http://blog.csdn.net/accry/article/details/6607703 下面是我的代码,代码很挫,绝对有很大的 ...

  9. POJ 3254 Corn Fields 状态压缩DP (C++/Java)

    id=3254">http://poj.org/problem? id=3254 题目大意: 一个农民有n行m列的地方,每一个格子用1代表能够种草地,而0不能够.放牛仅仅能在有草地的. ...

随机推荐

  1. memory prefix hypo,hecto,hyper out1

    1● hypo 次等   2● hecto 许多,百   3● hyper 超过,许多  

  2. PHP:第三章——PHP中的递归函数

    <?php header("Content-Type:text/html;charset=utf-8"); function A(){ static $i = 0; ++$i ...

  3. HDU 4635 Strongly connected (Tarjan+一点数学分析)

    Strongly connected Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) ...

  4. XE里, TStringField 还是 ansi的

    { TStringField } TStringField = class(TField) private FFixedChar: Boolean; FTransliterate: Boolean; ...

  5. Allow Zero Length 允许空字符串 ACCESS

    http://www.360doc.com/content/11/0118/20/991597_87447868.shtml https://microsoft.public.data.ado.nar ...

  6. onedriver -1T容量,edu邮箱申请。

    https://www.cccs.edu/ Apply申请 以前申请过这个红石社区大学. 创建帐号 自己翻译一下填填吧. 注册完,进入My Account,下面会有 2,点进去,也是注册. 3,点进去 ...

  7. struts2.1.6 action 01

    目录(?)[-] 安装与设置 HelloWorld 常见问题 Action   struts 官网下载 http://www.apache.org/ http://struts.apache.org/ ...

  8. Java——String类

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  9. ORM与hibernate概述

    JDBC是什么? JDBC代表java数据库连接,并提供一组java API,用于java成许访问关系数据库.这些Java的API允许Java程序执行SQL语句,并与任何SQL兼容的数据库进行交互. ...

  10. 2019.1.10 L223

    Heavy rains that brought additional pollution downstream last year contributed to the first decline ...