思路:

参照blog,用状压DP做,和题解稍微有点不一样,我这里直接储存了状态而不是索引。

这一题的问题是怎么判断相邻不能种,我们用2进制来表示每一行的种植情况。我们将每一行所能够造的所有可能都打表(即认为每一块都能种),然后将每一行不能种的地方用2进制保存下来,两者&运算聚能知道是否有重合,重合即此方法排除;上下两行同理;判断左右两块则是左移后&运算。

状态DP做的时候想着2进制时候的表示会好做点

代码:

#include<cstdio>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define ll long long
const int N = 500+5;
const int MOD = 100000000;
const int INF = 0x3f3f3f3f;
using namespace std;
int n,m,top;
ll dp[15][1<<12+5];
int state[600],cur[15];
void init(){ //所有可能状态
top = 0;
int tot = 1 << n;
for(int i = 0;i < tot;i++){
if(i&i<<1) continue;
state[++top] = i;
}
}
int main(){
scanf("%d%d",&m,&n);
init();
memset(dp,0,sizeof(dp));
for(int i = 1;i <= m;i++){
int tmp;
cur[i] = 0;
for(int j = 1;j <= n;j++){
scanf("%d",&tmp);
if(tmp == 0){
cur[i] += 1<<(n - j); //记录每一行不能种的
}
}
}
for(int i = 1;i <= top;i++){
if(cur[1]&state[i]) continue; //冲突
dp[1][state[i]] = 1;
}
for(int i = 2;i <= m;i++){ //第i行
for(int j = 1;j <= top;j++){ //i状态
if(cur[i]&state[j]) continue;
for(int k = 1;k <= top;k++){ //i-1状态
if(state[k]&cur[i-1]) continue;
if(state[j]&state[k]) continue;
dp[i][state[j]] += dp[i - 1][state[k]];
}
}
}
ll ans = 0;
for(int i = 1;i <= top;i++){
ans += dp[m][state[i]];
ans %= MOD;
}
printf("%lld\n",ans % MOD);
return 0;
}

POJ - 3254 Corn Fields(状压DP)题解的更多相关文章

  1. POJ 3254 - Corn Fields - [状压DP水题]

    题目链接:http://poj.org/problem?id=3254 Time Limit: 2000MS Memory Limit: 65536K Description Farmer John ...

  2. POJ 3254 Corn Fields (状压dp)

    题目链接:http://poj.org/problem?id=3254 给你n*m的菜地,其中1是可以种菜的,而菜与菜之间不能相邻.问有多少种情况. 状压dp入门题,将可以种菜的状态用一个数的二进制表 ...

  3. [ An Ac a Day ^_^ ] POJ 3254 Corn Fields 状压dp

    题意: 有一块n*m的土地 0代表不肥沃不可以放牛 1代表肥沃可以放牛 且相邻的草地不能同时放牛 问最多有多少种放牛的方法并对1e8取模 思路: 典型的状压dp 能状态压缩 能状态转移 能状态压缩的题 ...

  4. Poj - 3254 Corn Fields (状压DP)(入门)

    题目链接:https://vjudge.net/contest/224636#problem/G 转载于:https://blog.csdn.net/harrypoirot/article/detai ...

  5. poj 3254 Corn Fields 状压dp入门

    题目链接 题意 在\(M\times N\)的\(0,1\)格子上放东西,只有标记为\(1\)的格子可以放东西,且相邻的格子不能同时放东西.问有多少种放法. 思路 参考:swallowblank. \ ...

  6. POJ 1684 Corn Fields(状压dp)

    描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ ...

  7. POJ 3254 Corn Fields (状压入门)

    Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M≤ 12; 1 ≤ N ≤ 12) ...

  8. 【POJ3254】Corn Fields 状压DP第一次

    !!!!!!! 第一次学状压DP,其实就是运用位运算来实现一些比较,挺神奇的.. 为什么要发“!!!”因为!x&y和!(x&y)..感受一下.. #include <iostre ...

  9. [USACO06NOV]玉米田Corn Fields 状压DP

    题面: 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的 ...

  10. P1879 [USACO06NOV]玉米田Corn Fields 状压dp/插头dp

    正解:状压dp/插头dp 解题报告: 链接! ……我真的太菜了……我以为一个小时前要搞完的题目调错误调了一个小时……90分到100我差不多搞了一个小时…… 然后这题还是做过的……就很气,觉得确实是要搞 ...

随机推荐

  1. ubuntu 14.04 返回到经典桌面方法

    1.打开终端,运行下面命令:sudo apt-get install gnome-session-fallback 2.重启机器,选择gnome,然后登录

  2. Android 判断当前是否在跑monkey测试

    /**     * Returns true if Monkey is running.     */    public static boolean isMonkeyRunning() {     ...

  3. Ubuntu远程登录服务器--ssh的安装和配置

    ssh是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全. 安装ssh sudo apt-get update sudo apt-get install openssh-serve ...

  4. TextureMerger1.6.6 一:Egret MovieClip的制作和使用

    本随笔记录TextureMerger来制作动画,并在Egret中使用. 参考官网教程:http://bbs.egret.com/forum.php?mod=viewthread&tid=918 ...

  5. linux本机root账户无法登录,但是远程ssh可登录

    1.故障状态 a.linux本机root账户无法登录(root和密码无误的情况下也无法登录,但是用远程ssh软件可以登录) b.查看/var/log/secure登录日志(提示无法找到pam_limi ...

  6. IFS二次开发03——Item

    在TFS 中把每个文件夹被抽象成“ItemSet”或“Item”,相对于父级目录来讲就是Item ,相对于子级目录来讲就是“ItemSet”.每个文件都被抽象成“Item”. //连接TFS stri ...

  7. python3.7.2 ssl版本过低导致pip无法使用的问题

    环境:系统是centos6.6,python:python3.7.2 问题:安装好python3.pip后,在通过pip install xx 安装模块时,发现无法安装的问题,提示版本太低,系统默认的 ...

  8. NSString 属性为啥用copy 不用strong

     copy不能修改,strong可以修改,防止字符串被意外修改.demo: ——————————————————code 你要的 demo—————————————————— @property (n ...

  9. 8.Git撤销修改

    有一个文件内容如下: $ cat README.md the first ... the second ... the third ... - 文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版 ...

  10. 【转】sql server 订阅发布、快照发布(一)

    原文链接:https://blog.csdn.net/tiandi_5000/article/details/11646023 SQL SERVER 2012 使用订阅发布同步数据库(一) 2013年 ...