题目

  猛戳看题

分析

  讲题快luo!(逃

  2019.9.5 17:00 本人现场表演什么叫蔡讲题,欢迎拍砖。:)

  暂时不开放PPt下载。

  总之用dp[i][j]来表示对于前i行中,第i行采用第j种状态时可以得到的可行方案总数。

  dp[i][j]=dp[i-1][k1]+dp[i-1][k2]+…+dp[i-1][kn](kn即为上一行可行方案的编号,上一行共有n种可行方案)

  ans=dp[m][k1]+dp[m][k2]+…+dp[m][kn](kn为最后一行可行方案的编号)

代码

#include<bits/stdc++.h>
using namespace std;
#define Mod 100000000
int n,m,tot,ans;//v[i]//第i行整行的情况。
int dp[20][500],s[500],v[20];//dp对于前i行,每行有前j种可能方案时的解,s[i]存储每行所有可行的方案。
int main()
{scanf("%d%d",&n,&m);for(int i=0;i<(1<<m);i++) if((i&(i<<1))==0) s[++tot]=i;//记录不相邻的状态。for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int a;scanf("%d",&a);//读入该地块是否可放。if(a==0) v[i]+=1<<j-1;//整行的二进制。}}dp[0][1]=1;for(int i=1;i<=n;i++){for(int j=1;j<=tot;j++)//判断第i行假如按方案j放的话行不行。{if(s[j]&v[i]) continue;//判断上一行与其状态是否满足。for(int k=1;k<=tot;k++){if(s[j]&s[k]) continue;dp[i][j]=(dp[i][j]+dp[i-1][k])%Mod;}}}for(int i=1;i<=tot;i++){if(s[i]&v[n]) continue;ans=(ans+dp[n][i])%Mod;}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/DARTH-VADER-EMPIRE/p/11468692.html

BZOJ1725 牧场的安排相关推荐

  1. bzoj:1725: [Usaco2006 Nov]Corn Fields牧场的安排

    Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧 ...

  2. 【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排

    [算法]状压DP [题解]对于上一行的每个状态,每行进行DFS. #include<cstdio> #include<algorithm> #include<cstrin ...

  3. BZOJ 1725: [Usaco2006 Nov]Corn Fields牧场的安排

    状压DP #include<cstdio> using namespace std; const int mod=1e8; int n,m,a[15][15],F[15][10005]; ...

  4. 提高篇 第五部分 动态规划 第4章 状态压缩类动态规划

    例1 骑士(Sgu223) 1592:[例 1]国王 信息学奥赛一本通(C++版)在线评测系统 https://blog.csdn.net/guoyangfan_/article/details/82 ...

  5. 安卓版kindle电子书位置_kindle 安卓 app下载的电子书放在什么文件夹?

    [NEUQACM OJ]1017: 平面切割(特别版) 1017: 平面切割(特别版) 题目描述 我们要求的是n条闪电型折线分割平面的最大数目.比如,一条闪电型折线可以将平面分成两部分,两条最多可以将 ...

  6. 2018年10月训练记录(10.1~10.23)

    前言 这篇博客记录的是我在201820182018年101010月的刷题列表. 由于时间比较匆忙,可能会有一些空链接,但我会尽快将它们补齐的. (目前链接已补至Oct7thOct\ 7thOct 7t ...

  7. buctoj周赛14

    4516 Problem A 家庭作业 思路 设置一个无法完成的时间期限timetimetime(截止时间在此之前的作业都无法完成,即1−time1-time1−time都已被使用),设置visvis ...

  8. 《信息学奥赛一本通》提高版题单

    第一部分 基础算法 第 1 章 贪心算法 #10000 「一本通 1.1 例 1」活动安排 #10001 「一本通 1.1 例 2」种树 #10002 「一本通 1.1 例 3」喷水装置 #10003 ...

  9. LOJ 一本通一句话题解系列:

    第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...

最新文章

  1. 爬虫架构师得逆袭之路
  2. linux后台运行快捷键,Linux命令放入后台运行方法(和Ctrl+Z)详解版
  3. 力扣:15三数之和(python)
  4. jQuery获取iframe的document对象的方法
  5. Android studio之导入project出现SDK location not found. Define location with sdk.dir in the local.proper
  6. 比亚迪后续车都会搭在鸿蒙系统吗_华为鸿蒙系统上车,比亚迪汉发布!我告诉你华为鸿蒙到底是什么...
  7. java 工程文件改名后显示绿色加号_Gradle学习记录018 构建java JVM工程 part1
  8. matlab算法用python做_机器学习笔记—朴素贝叶斯算法实现(matlab/python)
  9. golang编译时报错:Get “https://proxy.golang.org/github.com/antihax/optional/@v/v1.0.0.mod“: dial tcp 172.2
  10. 阿里巴巴大规模稀疏模型训练/预测引擎 DeepRec 正式开源
  11. 【数据结构】线性表的链式存储结构
  12. bmd硬盘测试_mac硬盘测速工具Blackmagic Disk Speed Test如何使用
  13. Symbian智能手机特殊号码搜集(转)
  14. 哥尼斯堡的“七桥问题” (25分) c++实现
  15. 达人评测 iPad Pro 2021怎么样
  16. 如何用HTML和css实现拼图,打造自己的html5拼图小游戏
  17. wpf初学者-wpf控件简单介绍
  18. Shape Inpainting using 3D Generative Adversarial Network and Recurrent Convolutional Networks
  19. mysql中字符串转时间戳_MySQL日期 字符串 时间戳互转
  20. 利用Matlab设计滤波器(FDAT) .

热门文章

  1. 实验1 词法分析程序设计
  2. 【Qt】modbus之TCP模式读操作
  3. 【Linux】一步一步学Linux——batch命令(134)
  4. java scanner 用不了_java Scanner具有神奇的作用可惜大部分java开发人员不知
  5. linux+android4.2键值关系,Android4.0 添加一个新的Android 键值
  6. Codeforces 793b B. Igor and his way to work 觉得大神写的3维bfs太复杂,突然发现这题是连连看算法。
  7. laravel 先排序后分组怎么写_插入排序的故事
  8. 获取IP地址和MAC地址
  9. 打开VMware的系统出错
  10. 一个链表创建、反转、打印的C语言代码