BZOJ1725 牧场的安排
题目
分析
讲题快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 牧场的安排相关推荐
- bzoj:1725: [Usaco2006 Nov]Corn Fields牧场的安排
Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧 ...
- 【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排
[算法]状压DP [题解]对于上一行的每个状态,每行进行DFS. #include<cstdio> #include<algorithm> #include<cstrin ...
- 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章 状态压缩类动态规划
例1 骑士(Sgu223) 1592:[例 1]国王 信息学奥赛一本通(C++版)在线评测系统 https://blog.csdn.net/guoyangfan_/article/details/82 ...
- 安卓版kindle电子书位置_kindle 安卓 app下载的电子书放在什么文件夹?
[NEUQACM OJ]1017: 平面切割(特别版) 1017: 平面切割(特别版) 题目描述 我们要求的是n条闪电型折线分割平面的最大数目.比如,一条闪电型折线可以将平面分成两部分,两条最多可以将 ...
- 2018年10月训练记录(10.1~10.23)
前言 这篇博客记录的是我在201820182018年101010月的刷题列表. 由于时间比较匆忙,可能会有一些空链接,但我会尽快将它们补齐的. (目前链接已补至Oct7thOct\ 7thOct 7t ...
- buctoj周赛14
4516 Problem A 家庭作业 思路 设置一个无法完成的时间期限timetimetime(截止时间在此之前的作业都无法完成,即1−time1-time1−time都已被使用),设置visvis ...
- 《信息学奥赛一本通》提高版题单
第一部分 基础算法 第 1 章 贪心算法 #10000 「一本通 1.1 例 1」活动安排 #10001 「一本通 1.1 例 2」种树 #10002 「一本通 1.1 例 3」喷水装置 #10003 ...
- LOJ 一本通一句话题解系列:
第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...
最新文章
- 爬虫架构师得逆袭之路
- linux后台运行快捷键,Linux命令放入后台运行方法(和Ctrl+Z)详解版
- 力扣:15三数之和(python)
- jQuery获取iframe的document对象的方法
- Android studio之导入project出现SDK location not found. Define location with sdk.dir in the local.proper
- 比亚迪后续车都会搭在鸿蒙系统吗_华为鸿蒙系统上车,比亚迪汉发布!我告诉你华为鸿蒙到底是什么...
- java 工程文件改名后显示绿色加号_Gradle学习记录018 构建java JVM工程 part1
- matlab算法用python做_机器学习笔记—朴素贝叶斯算法实现(matlab/python)
- golang编译时报错:Get “https://proxy.golang.org/github.com/antihax/optional/@v/v1.0.0.mod“: dial tcp 172.2
- 阿里巴巴大规模稀疏模型训练/预测引擎 DeepRec 正式开源
- 【数据结构】线性表的链式存储结构
- bmd硬盘测试_mac硬盘测速工具Blackmagic Disk Speed Test如何使用
- Symbian智能手机特殊号码搜集(转)
- 哥尼斯堡的“七桥问题” (25分) c++实现
- 达人评测 iPad Pro 2021怎么样
- 如何用HTML和css实现拼图,打造自己的html5拼图小游戏
- wpf初学者-wpf控件简单介绍
- Shape Inpainting using 3D Generative Adversarial Network and Recurrent Convolutional Networks
- mysql中字符串转时间戳_MySQL日期 字符串 时间戳互转
- 利用Matlab设计滤波器(FDAT) .
热门文章
- 实验1 词法分析程序设计
- 【Qt】modbus之TCP模式读操作
- 【Linux】一步一步学Linux——batch命令(134)
- java scanner 用不了_java Scanner具有神奇的作用可惜大部分java开发人员不知
- linux+android4.2键值关系,Android4.0 添加一个新的Android 键值
- Codeforces 793b B. Igor and his way to work 觉得大神写的3维bfs太复杂,突然发现这题是连连看算法。
- laravel 先排序后分组怎么写_插入排序的故事
- 获取IP地址和MAC地址
- 打开VMware的系统出错
- 一个链表创建、反转、打印的C语言代码