【luogu P1879 [USACO06NOV]玉米田Corn Fields】 题解
题目链接:https://www.luogu.org/problemnew/show/P1879
状压DP。
设dp[i][j]表示第i行,状态为j的方案数
初始dp[0][0] = 1
这样一共12行12列,最多1<<12。
这样转移时,只要满足上下没有两个1,这两行分别满足没有相邻1。
加法原理转移。
\(j&k==0\)
$ dp[i][j] += dp[i-1][k] $
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const int maxn = 5000;
const int mod = 100000000;
ll a[20][maxn], dp[20][maxn], n, m, b[20], ans, is[maxn];
int main()
{
cin>>n>>m;
for(ll i = 1; i <= n; i++)
for(ll j = 1; j <= m; j++) cin>>a[i][j];
for(ll i = 1; i <= n; i++)
for(ll j = 1; j <= m; j++)
if(a[i][j]) b[i] += (1<<(m-j+1));
for(ll i = 1; i <= n; i++) b[i] >>= 1;
for(ll i = 0; i < (1 << m); i++)
if((i&(i<<1)) == 0 && (i&(i>>1)) == 0) is[i] = 1;
dp[0][0] = 1;
for(ll i = 1; i <= n; i++)
{
for(ll j = 0; j < (1 << m); j++)
{
if(is[j] && ((j & b[i]) == j))
for(ll k = 0; k < (1 << m); k++)
{
if((j & k) == 0)
dp[i][j] = (dp[i][j] + dp[i-1][k])%mod;
}
}
}
for(ll i = 0; i < (1 << m); i++) ans = (ans + dp[n][i]) % mod;
cout<<ans%mod;
}
【luogu P1879 [USACO06NOV]玉米田Corn Fields】 题解的更多相关文章
- 洛谷 P1879 [USACO06NOV]玉米田Corn Fields 题解
P1879 [USACO06NOV]玉米田Corn Fields 题目描述 Farmer John has purchased a lush new rectangular pasture compo ...
- luogu P1879 [USACO06NOV]玉米田Corn Fields
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- C++ 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
没学状压DP的看一下 合法布阵问题 P1879 [USACO06NOV]玉米田Corn Fields 题意:给出一个n行m列的草地(n,m<=12),1表示肥沃,0表示贫瘠,现在要把一些牛放在 ...
- P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
P1879 [USACO06NOV]玉米田Corn Fields 状压dp水题 看到$n,m<=12$,肯定是状压鸭 先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了 #include& ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
洛谷P1879 [USACO06NOV]玉米田Corn Fields \(f[i][j]\) 表示前 \(i\) 行且第 \(i\) 行状态为 \(j\) 的方案总数.\(j\) 的大小为 \(0 \ ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压DP】题解+AC代码
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- P1879 [USACO06NOV]玉米田Corn Fields (状压dp入门)
题目链接: https://www.luogu.org/problemnew/show/P1879 具体思路: 我们可以先把所有合法的情况枚举出来,然后对第一行判断有多少种情况满足,然后对于剩下的行数 ...
- 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields (状态压缩DP)
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
随机推荐
- 分布式时序数据库InfluxDB
我们内部的监控系统用到分布式时序数据库InfluxDB http://www.ttlsa.com/monitor-safe/monitor/distributed-time-series-databa ...
- UOJ188. 【UR #13】Sanrd
传送门 Sol 设 \(f_i\) 表示 \(i\) 的次大质因子 题目就是要求 \[\sum_{i=l}^{r}f_i\] 考虑求 \(\sum_{i=1}^{n}f_i\) 所求的东西和质因子有关 ...
- 【Codeforces】Helvetic Coding Contest 2017 online mirror比赛记
第一次打ACM赛制的团队赛,感觉还行: 好吧主要是切水题: 开场先挑着做五道EASY,他们分给我D题,woc什么玩意,还泊松分布,我连题都读不懂好吗! 果断弃掉了,换了M和J,然后切掉了,看N题: l ...
- FCC的javascript初级算法题解答
FCC上的javascript基础算法题 前一阵子做的基础算法题,感觉做完后收获还蛮大的,现在将自己的做法总结出来,供大家参考讨论.基本上做到尽量简短有效,但有些算法还可以继续简化,比如第七题若采用正 ...
- nodo合并多个mp3文件
nodo合并多个mp3文件 会使用到node中的fs - 文件系统 import fs from 'fs'; //读取目录下的文件,返回文件名数组[0x2.mp3,f0k.mp3]; const fi ...
- Linux 新手入门常用命令
1,增加用户:useradd mylinux passwd mylinux 添加你的用户密码 2,切换用户: su otheruser (注意这种切换方式只是临时的,本质工作目录还在原来的用户目录 ...
- Hadoop & Spark & Hive & HBase
Hadoop: http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-common/SingleCluster.html bi ...
- UC 优视发布“UC+”开放平台
7月5日消息,以浏览器起家的UC优视今天在2013移动互联网创新大会上正式发布“UC+”开放平台战略. UC优视公司总裁何小鹏同时表示:通过“UC+”开放平台,UC将UC浏览器全球四亿用户与移动端巨大 ...
- OmniGraffle教程(二)
原文链接:简书网 创建一个树形结构图是任何一个作图软件最常用的功能之一了,而OmniGraffle画树形图的快速方便是其他软件无法比拟的,花1分钟即可学会,受益无穷. 方法一:用Diagram工具快速 ...
- 用Appium让Android功能自动化测试飞起来
前言 做Android端功能自动化已有2年多的时间了,使用过的功能自动化框架有Robotium.Uiautomator.Appium.最近研究自动化case复用的方案,调研了Appium的自动化框架, ...