poj 3254 Corn Fields 国家压缩dp
意甲冠军:
要在m行n陆行,有一些格您可以种树,别人做不到的。不相邻的树,我问了一些不同的共同拥有的法律。
分析:
从后往前种,子问题向父问题扩展,当种到某一格时仅仅有他和他后面的n-1个格子的情况对它有影响。故对这n个格子进行编码为状态S,表示种完(多米诺骨牌那题是放置前。注意差别,都可行)这n个格子的状态。父问题由稍小子问题逐步解决,正是动态规划的思想。
代码:
//poj 3254
//sep9
#include <iostream>
using namespace std;
const int maxN=14;
const int mod=100000000;
int land[maxN][maxN];
int dp[2][1<<maxN];
int m,n; int main()
{
scanf("%d%d",&m,&n);
int i,j,used;
for(i=0;i<m;++i)
for(j=0;j<n;++j)
scanf("%d",&land[i][j]);
int *cur=dp[0],*nxt=dp[1];
cur[0]=1;
for(i=m-1;i>=0;--i)
for(j=n-1;j>=0;--j){
for(used=0;used<1<<n;++used){
if(land[i][j]==0){
if(used>>j&1)
nxt[used]=0;
else{
nxt[used]=cur[used];
nxt[used]+=cur[used|(1<<j)];
nxt[used]%=mod;
}
}
else{
int res=0;
if((used>>j&1)&&(used>>(j+1)&1)){
res=0;
}else if(!(used>>j&1)&&(used>>(j+1)&1)){
res=cur[used];
res+=cur[used|(1<<j)];
}else if((used>>j&1)&&!(used>>(j+1)&1)){
res=cur[used&(~(1<<j))];
}else if(!(used>>j&1)&&!(used>>(j+1)&1)){
res=cur[used];
res+=cur[used|(1<<j)];
}
nxt[used]=res%mod;
}
}
swap(cur,nxt);
}
int sum=0;
for(int i=0;i<1<<n;++i){
sum+=cur[i];
sum%=mod;
}
printf("%d",sum);
return 0;
}
poj 3254 Corn Fields 国家压缩dp的更多相关文章
- POJ 3254. Corn Fields 状态压缩DP (入门级)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9806 Accepted: 5185 Descr ...
- POJ 3254 Corn Fields(状态压缩DP)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4739 Accepted: 2506 Descr ...
- POJ 3254 Corn Fields (状态压缩DP)
题意:在由方格组成的矩形里面种草,相邻方格不能都种草,有障碍的地方不能种草,问有多少种种草方案(不种也算一种方案). 分析:方格边长范围只有12,用状态压缩dp好解决. 预处理:每一行的障碍用一个状态 ...
- POJ 3254 Corn Fields 状态压缩DP (C++/Java)
id=3254">http://poj.org/problem? id=3254 题目大意: 一个农民有n行m列的地方,每一个格子用1代表能够种草地,而0不能够.放牛仅仅能在有草地的. ...
- poj - 3254 Corn Fields (状态压缩dp入门)
http://poj.org/problem?id=3254 参考:http://blog.csdn.net/accry/article/details/6607703 农夫想在m*n的土地上种玉米, ...
- POJ 3254 Corn Fields状态压缩DP
下面有别人的题解报告,并且不止这一个状态压缩题的哦···· http://blog.csdn.net/accry/article/details/6607703 下面是我的代码,代码很挫,绝对有很大的 ...
- [ACM] POJ 3254 Corn Fields(状态压缩)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8062 Accepted: 4295 Descr ...
- POJ 3254 - Corn Fields - [状压DP水题]
题目链接:http://poj.org/problem?id=3254 Time Limit: 2000MS Memory Limit: 65536K Description Farmer John ...
- POJ 3254 Corn Fields (状压dp)
题目链接:http://poj.org/problem?id=3254 给你n*m的菜地,其中1是可以种菜的,而菜与菜之间不能相邻.问有多少种情况. 状压dp入门题,将可以种菜的状态用一个数的二进制表 ...
随机推荐
- iOS的图表显示的实现
在app通常有家居展览的照片,显示广告.或者头条新闻.通常网易新闻client 如图,红框框的位置就是一个典型的图展, 熟悉iOS的人肯定知道,这个是个UIScrollview,里面加几张图片就可以实 ...
- C#如何获得 WINDOWS
版本号
using System; using System.Runtime.InteropServices; namespace GetWindowsVersion { [ StructLayout( La ...
- Android开发被添加到桌面快捷方式
Android开发被添加到桌面快捷方式 对于一个希望拥有很多其它用户的应用来说.用户桌面能够说是全部软件的必争之地,假设用户在手机桌面上建立了该软件的快捷方式.用户将会更频繁地使用该软件. 因此,全部 ...
- Orleans:NET的Actor模型
.NET的Actor模型:Orleans Orleans是微软推出的类似Scala Akka的Actor模型,Orleans是一个建立在.NET之上的,设计的目标是为了方便程序员开发需要大规模扩展 ...
- java提高篇(十四)-----关键字final
在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是"这部分是无法修改的".不想被改变的原因有两个:效 ...
- Hibernate一个简短的引论
我们从几个方面进行阐述Hibernate When? What ? How? When? Hibernate由来是因为当时EJBBean1.1在处理entittBean架构时,花费的时间要比业务逻辑很 ...
- 自己动手写CPU之第八阶段(4)——转移指令实现过程2
将陆续上传本人写的新书<自己动手写CPU>,今天是第36篇,我尽量每周四篇 开展晒书评送书活动,在亚马逊.京东.当当三大图书站点上,发表<自己动手写CPU>书评的前十名读者,均 ...
- Android 建立View 圆角
虽然很easy,不过还是录制. 混合参观 在drawable文件下 创建一个布局文件corners_bg.xml <?xml version="1.0" encoding=& ...
- 于windows建筑物Cocos2d-x win32开发环境
这份文件是从cocos2d-x复制的官网.. . 在windows7上搭建COCOS2D-X开发环境并不难. 可是因为框架更新过快,非常多用户都有困难.我希望你们觉得这个教程实用. 建议:为了避 ...
- 彩色图像--色彩空间 CMY(K)场地
得知DIP文章63日 转载请注明文章出处:http://blog.csdn.net/tonyshengtan .出于尊重文章作者的劳动,转载请标明出处!文章代码已托管.欢迎共同开发:https://g ...