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不能够.放牛仅仅能在有草地的. ...
随机推荐
- SQL Server 调优系列基础篇 - 性能调优介绍
前言 关于SQL Server调优系列是一个庞大的内容体系,非一言两语能够分析清楚,本篇先就在SQL 调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优. 通过 ...
- 快速切题 cf118A
这教导人们一定要看题,要看题,元音包含了‘y’,完毕,要看题啊 #include <cstring> #include <cstdio> #include <cctype ...
- 【转载】oracle之rowid详解
原文URL:http://www.2cto.com/database/201109/104961.html 本文讨论的是关于oracle从8i开始引进object的概念后的rowid,即扩展(exte ...
- C++静态成员变量和静态成员函数
数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配 ...
- 静态函数和全局函数都没有this指针
静态函数和全局函数都没有this指针
- Maven入门-5.Maven的聚合和继承
1.Maven的聚合1.1 聚合的配置2.Maven的继承2.1 可被继承的POM元素2.2 POM中使用继承2.3 继承dependency 1.Maven的聚合 在Maven入门-4.Maven的 ...
- vue和微信小程序的区别、比较
链接:https://segmentfault.com/a/1190000015684864 一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. vue ...
- L241
Parents, try to get enough sleep to role model good habits to children. Bessesen notes that some med ...
- Nexus设备渗透测试平台 – Kali Linux NetHunter
NetHunter是一个基于Kali Linux为Nexus设备构建的Android渗透测试平台,其中包括一些特殊和独特的功能.NetHunter支持无线802.11注入,一键MANA AP搭建,HI ...
- C语言基础:二维数组 分类: iOS学习 c语言基础 2015-06-10 21:42 16人阅读 评论(0) 收藏
二维数组和一位数组类似. 定义: 数据类型 数组名[行][列]={{ },{ }....}; 定义时,一维(行)的长度可以省略,但是二维(列)的长度不可以省略.但是访问时,一定使用双下标. 二维数组的 ...