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不能够.放牛仅仅能在有草地的. ...
随机推荐
- json 的样式与应用 - C#/.NET
本文采用问答的方式来写 问题一:什么是 json ? json是一种轻量级的数据交换格式,非常适合服务器与JavaScript交互.(它和XML一样,都是用来处理交互数据的) 问题二:json 长什么 ...
- OAF中下载附件之后页面失效,报过时的数据异常,浏览器后退异常
我在使用了下载功能之后,再往页面添加行或进行保存,页面老是报浏览器后退的异常. 猜测是因为我的下载按钮使用的submitButton,它隐式的包含了一个submit动作,且我在代码中有一个Commit ...
- Cxfreeze使用存在问题
Cxfreeze使用 cx_Freeze-5.1.1-cp36-cp36m-win_amd64.wh 1● 打包多个文件 Cxfreeze D:/test.py –target-dir D:/ c ...
- SQL中游标的使用(转)
http://www.cnblogs.com/tianguook/archive/2011/03/09/1977987.html 一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言, ...
- hdu4800 Josephina and RPG 解题报告
Josephina and RPG Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- java正则获取括号内的数据与排除括号内的数据
1.正则获取括号内的数据 /** * 获取指定字符串中括号内的内容,返回字符串数组 * @param content * @return */ public String[] getBracketCo ...
- tomcat用户配置,内存配置,pid配置
一:tomcat用户配置 1.打开 webapps\manager\WEB-INF\web.xml 可以看到tomcat所有的角色名,后面我们就是需要配置这些角色 2.给用户添加角色 打开 conf/ ...
- 三步解决 vue 按需加载
1 webpack 的 output 配置 chunkFleName 树干名称: " chunks/[name]-[chunkhash:8].js " 这一步是配合第三步, 生 ...
- shell_exec
shell_exec — Execute command via shell and return the complete output as a string: <?php$output = ...
- iOS开发UI之Quartz2D使用(绘制基本图形)
iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...