POJ3254Corn Fields——状态压缩dp
题目: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的更多相关文章
- POJ3254Corn Fields(状态压缩DP入门)
题目链接 题意:一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻.问有多少种放牛方案(一 ...
- POJ 3254 Corn Fields(状态压缩DP)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4739 Accepted: 2506 Descr ...
- POJ3254 - Corn Fields(状态压缩DP)
题目大意 给定一个N*M大小的土地,土地有肥沃和贫瘠之分(每个单位土地用0,1来表示贫瘠和肥沃),要求你在肥沃的单位土地上种玉米,如果在某个单位土地上种了玉米,那么与它相邻的四个单位土地是不允许种玉米 ...
- POJ 3254 Corn Fields (状态压缩DP)
题意:在由方格组成的矩形里面种草,相邻方格不能都种草,有障碍的地方不能种草,问有多少种种草方案(不种也算一种方案). 分析:方格边长范围只有12,用状态压缩dp好解决. 预处理:每一行的障碍用一个状态 ...
- POJ Corn Fields 状态压缩DP基础题
题目链接:http://poj.org/problem?id=3254 题目大意(名称什么的可能不一样,不过表达的意思还是一样的): 种玉米 王小二从小学一年级到现在每次考试都是班级倒数第一名,他的爸 ...
- POJ 3254. Corn Fields 状态压缩DP (入门级)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9806 Accepted: 5185 Descr ...
- poj Corn Fields 状态压缩dp。
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5763 Accepted: 3052 Descr ...
- POJ 3254 Corn Fields状态压缩DP
下面有别人的题解报告,并且不止这一个状态压缩题的哦···· http://blog.csdn.net/accry/article/details/6607703 下面是我的代码,代码很挫,绝对有很大的 ...
- POJ 3254 Corn Fields 状态压缩DP (C++/Java)
id=3254">http://poj.org/problem? id=3254 题目大意: 一个农民有n行m列的地方,每一个格子用1代表能够种草地,而0不能够.放牛仅仅能在有草地的. ...
随机推荐
- js实现欧几里得算法
概念 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法. 证明 首先假设有两个数a和b,其中a是不小于b的数,记a被b除的余数为r,那么a可 ...
- js打开、关闭页面和运行代码那些事
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- (C#基础)创建文件,文件夹
文件夹,文件这是常见的,怎么创建?要不要先判断是否存在?非常非常基础的知识点. 代码 using System; using System.Collections.Generic; using Sys ...
- Taffy自动化测试框架Web开发,Python Flask实践详解
1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 本页面适用所有基于taffy/nose框架编写的自动化测试脚本,或基于un ...
- 给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化
给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化 标签: ajaxdictionaryjsonobject服务器function 2012-07-25 18:41 2242人阅读 ...
- How to pass string parameters to an TADOQuery?
http://4byte.cn/question/1130217/how-to-pass-string-parameters-to-an-tadoquery.html 从2个答案看,如果TADOQue ...
- IE 11 回车事件代码不起作用但是在chrom可以正常运行解决办法
今天遇到这个问题,搞半天开始以为是代码写错了,后面拿到chrom上执行发现是正常的,就是这段代码 function EnterPress(){ if(event.keyCode == ...
- WiFi Pineapple的Karma攻击与原理探究
WiFi钓鱼是一种被炒烂了的安全威胁,你几乎每天都能从电视.网络媒体中看到因误连了恶意WiFi导致大笔资金失窃的案例,并且很多媒体语不惊人死不休的报道风格总是能把当事人的受害过程删减修饰到灵异的程度. ...
- android:Unsupported major.minor version 52.0
错误描述 使用android studio项目编译过程报如下错误: java.lang.UnsupportedClassVersionError: com/android/build/gradle/A ...
- 新手小白Linux(Centos6.5)部署java web项目(mysql5.7安装及相关操作)
一.安装 参考:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html # 检测系统中是否安装了mysql y ...