#\(\mathcal{\color{red}{Description}}\)

\(Link\)

农场主\(John\)新买了一块长方形的新牧场,这块牧场被划分成\(M\)行\(N\)列\((1 ≤ M ≤ 12; 1 ≤ N ≤ 12)\),每一格都是一块正方形的土地。

\(John\)打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。

遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是\(John\)不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。

\(John\)想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案)

#\(\mathcal{\color{red}{Solution}}\)

\(emmm\)这题是我上周做的……害得我都忘了当时犯了什么纸张错误= =

一看就是状压\(DP\)

我发现原来状压DP的转移都贼简单……\(emmm\)我的意思是暂时,起码迄今为止我做过的状压题里都挺简单(做过的题\(\leq 5\))……

然后我们可以考虑一开始把\(0\)的位置记成\(1\),然后我们判断的时候只要看它&起来会不会为真就行……

有个坑点就是

    for(i = 1; i <= N; i ++)
for(j = 1; j <= M; j ++){
cin >> c ;
if (c == '0')
Line[i] |= (1 << (j - 1)) ;
}

这是读入……然后我把\(1 << (j - 1)\)给写成了\(1 << j\)还觉得挺对\(emmmm\)

嗯,实践出真知,劳动创造财富左移运算是移动几位……嘤嘤嘤比如你\(1\)左移\(3\)位其实其实来到的是第\(4\)位上……

哇塞我可真是个蒟蒻……

#include <cmath>
#include <cstdio>
#include <iostream> using namespace std ;
typedef long long ll ;
const int MAXN = 210 ;
const ll mod = 100000000 ;
char c ; ll ans, i, j, k, Mx ;
ll N, M, Line[20], dp[20][4080] ; int main(){
cin >> N >> M ;
dp[0][0] = 1 ;
Mx = (1 << M) - 1 ;
for(i = 1; i <= N; i ++)
for(j = 1; j <= M; j ++){
cin >> c ;
if (c == '0')
Line[i] |= (1 << (j - 1)) ;
}
for(i = 1; i <= N; i ++)
for(j = 0 ; j <= Mx; j ++){
if((j & Line[i]) || (j & (j >> 1)) ) continue ;
for(k = 0 ; k <= Mx; k ++){
if((j & k) || (k & Line[i - 1]) || (k &(k >> 1))) continue ;
dp[i][j] = (dp[i][j] + dp[i - 1][k]) % mod ;
}
}
for(i = 0; i <= Mx; i ++) ans = (ans + dp[N][i]) % mod ;
cout << ans % mod ;
}

[USACO06NOV]玉米田$Corn \ \ Fields$ (状压$DP$)的更多相关文章

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

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

  2. [USACO06NOV]玉米田Corn Fields (状压$dp$)

    题目链接 Solution 状压 \(dp\) . \(f[i][j][k]\) 代表前 \(i\) 列中 , 已经安置 \(j\) 块草皮,且最后一位状态为 \(k\) . 同时多记录一个每一列中的 ...

  3. 状压DP【洛谷P1879】 [USACO06NOV]玉米田Corn Fields

    P1879 [USACO06NOV]玉米田Corn Fields 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形 ...

  4. C++ 洛谷 P1879 [USACO06NOV]玉米田Corn Fields

    没学状压DP的看一下 合法布阵问题  P1879 [USACO06NOV]玉米田Corn Fields 题意:给出一个n行m列的草地(n,m<=12),1表示肥沃,0表示贫瘠,现在要把一些牛放在 ...

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

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

  6. 状压DP【p1879】[USACO06NOV]玉米田Corn Fields

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

  7. P1879 [USACO06NOV]玉米田Corn Fields

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

  8. <USACO06NOV>玉米田Corn Fields

    状压emm 二进制真有趣 来自dp垃圾的欣喜 Description 农民 John 购买了一处肥沃的矩形牧场,分成M*N(1 <= M <= 12; 1 <= N <= 12 ...

  9. [USACO06NOV]玉米田Corn Fields

    题面描述 状压dp. 设\(f[i][sta]\)为第\(i\)层状态为\(sta\)的方案数. 然后每次可以枚举上一层的状态以及本层的状态,然后如果不冲突且满足地图的要求,则转移. 时间复杂度\(O ...

  10. [洛谷P1879][USACO06NOV]玉米田Corn Fields

    题目大意:有一个$n\times m$的矩阵,$(1 \leq m \leq 12; 1 \leq n \leq 12)$,想在其中的一些格子中种草,一些格子不能种草,且两块草地不相邻.问有多少种种植 ...

随机推荐

  1. Ubuntu16.04下安装MATLAB 2016b!完美运行

    目录 1.下载MATLAB 2016b 2.挂载iso 3.安装MATLAB 4.破解 5.快捷键与运行 1.下载MATLAB 2016b 下载matlab 2016b for linux(可以百度搜 ...

  2. 判断有几个checkbox被选中

    //判断是否有选中的checkbox的值是否为空 var number = $("input[type='checkbox']:checked").length; if(numbe ...

  3. 从JSON中读取数据追加到HTML中

    本文来自https://www.jianshu.com/p/04127d74d88c,并非本人原创,只是作为自己学习使用的资料,如有浏览者请点击地址自行到原作者页面浏览 有时候我们需要将json数据直 ...

  4. JavaScript周报#185

    This week’s JavaScript news Read this issue on the Web | Issue Archive JavaScript Weekly Issue 185Ju ...

  5. JS cookie 设置 查看 删除

    JScookie 常用的3个预设函数(库) <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&q ...

  6. JS 变量 命名规范 oDiv aDiv 等

    l命名规范及必要性 l可读性--能看懂 l规范性--符合规则 l匈牙利命名法 l类型前缀 类型 前缀 类型 实例 数组 a Array aItems 布尔值 b Boolean bIsComplete ...

  7. Python 批量修改文件名并移动文件到指定目录

    # -*- coding: utf-8 -*- import os, sys,re,shutil from nt import chdir #读取中文路径 u'' path=u"D:\\zh ...

  8. MySQL数据库更改默认引擎为Innodb【配置】

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定. 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyIS ...

  9. windows7x64系统中配置mysql5.7.17为本地开发环境(win2008类似)

    1. 下载mysql压缩包mysql-5.7.17-winx64.ziphttps://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.17-winx64.z ...

  10. [转]Apache的CRT格式SSL证书转换成IIS用的PFX格式

    转自:http://www.getvm.net/apache-crt-ssl-convert-to-iis-pfx/ Apache使用的SSL证书是.crt格式,如果你的网站从Apache换到了win ...