[USACO06NOV]玉米田$Corn \ \ Fields$ (状压$DP$)
#\(\mathcal{\color{red}{Description}}\)
农场主\(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$)的更多相关文章
- [USACO06NOV]玉米田Corn Fields 状压DP
题面: 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的 ...
- [USACO06NOV]玉米田Corn Fields (状压$dp$)
题目链接 Solution 状压 \(dp\) . \(f[i][j][k]\) 代表前 \(i\) 列中 , 已经安置 \(j\) 块草皮,且最后一位状态为 \(k\) . 同时多记录一个每一列中的 ...
- 状压DP【洛谷P1879】 [USACO06NOV]玉米田Corn Fields
P1879 [USACO06NOV]玉米田Corn Fields 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形 ...
- C++ 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
没学状压DP的看一下 合法布阵问题 P1879 [USACO06NOV]玉米田Corn Fields 题意:给出一个n行m列的草地(n,m<=12),1表示肥沃,0表示贫瘠,现在要把一些牛放在 ...
- P1879 [USACO06NOV]玉米田Corn Fields 状压dp/插头dp
正解:状压dp/插头dp 解题报告: 链接! ……我真的太菜了……我以为一个小时前要搞完的题目调错误调了一个小时……90分到100我差不多搞了一个小时…… 然后这题还是做过的……就很气,觉得确实是要搞 ...
- 状压DP【p1879】[USACO06NOV]玉米田Corn Fields
Description 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上 ...
- P1879 [USACO06NOV]玉米田Corn Fields
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- <USACO06NOV>玉米田Corn Fields
状压emm 二进制真有趣 来自dp垃圾的欣喜 Description 农民 John 购买了一处肥沃的矩形牧场,分成M*N(1 <= M <= 12; 1 <= N <= 12 ...
- [USACO06NOV]玉米田Corn Fields
题面描述 状压dp. 设\(f[i][sta]\)为第\(i\)层状态为\(sta\)的方案数. 然后每次可以枚举上一层的状态以及本层的状态,然后如果不冲突且满足地图的要求,则转移. 时间复杂度\(O ...
- [洛谷P1879][USACO06NOV]玉米田Corn Fields
题目大意:有一个$n\times m$的矩阵,$(1 \leq m \leq 12; 1 \leq n \leq 12)$,想在其中的一些格子中种草,一些格子不能种草,且两块草地不相邻.问有多少种种植 ...
随机推荐
- python学习之老男孩python全栈第九期_day026知识点总结——封装、property、类方法、初识反射
一. 封装 class Room: def __init__(self, name, length, width): self.__name = name self.__length = length ...
- stm32f10x单片机进阶--spi使用
使用SPI与外部flash(MX25L6406EM21)IC通信 连接方式 如上图所示,MCU通过SPI2与外部flash芯片进行相连接. MCU spi2初 ...
- JQuery UI完成自动匹配的的下拉列表步骤
1.先引入jquery ui相关的js,如:jquery-ui-1.10.4.js 2.写js <script type="text/javascript"> $(fu ...
- laravel开发之-php artisan命令
php artisan :所有的命令列表 php artisan make:controller 文件夹名称/控制器名称 :创建控制器的命令以及控制器放置的文件夹 php artisan make:m ...
- css 关闭按钮实现
通过css的伪元素:before,:after以及transform: rotate(45deg);旋转来实现(支持IE9及其以上版本) <div class="close" ...
- MUI框架-04-切换页面头部文字重叠
MUI框架-04-切换页面头部文字重叠 从现在开始就只分享 MUI 框架开发时遇到的问题了 开发不懂请查看:官方文档 问题情况 切换页面 title 文字重叠,覆盖 截图: 解决办法 给 h1 标签加 ...
- 软工读书笔记 week4 ——《黑客与画家》下
因为时间有限,只对书中后半部分几个篇章进行了阅读. 一.另一条路 作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...
- mvn install 时候报GBK编码错误解决办法
在pom.xml里面 <properties> <!-- 文件拷贝时的编码 --> <project.build.sourceEncoding>UTF-</p ...
- 二、Asp.Net Core WebAPI——OcelotDemo
项目源码OcelotDemo 基础知识在教程或者官网文档查看 Ocelot源码 基于.NET平台的Ocelot网关框架教程汇总 这篇文章不错. 这里我只写我想说的 项目结构 API1和API2是测试的 ...
- Exchange 接收连接器(Client、Default)区别,OUtlook实际测试
CAS就是接收连接器(110,995): Server Config--Client Access:POP3 and IMAP4:POP3设置 HUB就是发送连接器(25,587) Server Co ...