【OpenJudge9275】【Usaco2009 Feb】【递推】Bullcow
Bullcow
总时间限制: 12000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB
【描述】
一年一度的展会要来临了,农民约翰想要把N(1 <= N <= 100,000)只奶牛和公牛安排在单独的一行中。 约翰发现最近公牛们非常好斗;假如两只公牛在这一行中靠的太近,他们就会吵架,以至于斗殴,破坏这和谐的环境。约翰非常的足智多谋,他计算出任何两只公牛之间至少要有K (0 <= K < N)只奶牛,这样才能避免斗殴。 约翰希望你帮助他计算一下有多少种安排方法,可避免任何斗殴的的发生。约翰认为每头公牛都是一样的,每头奶牛都是一样的。因而,只要在一些相同的位置上有不同种类的牛,那这就算两种不同的方法。
【输入】
第一行:两个用空格隔开的数:N和K
【输出】
第一行:一个单独的数,即约翰可以安排的方法数。考虑到这个数可能很大,你只要输出mod 5,000,011之后的结果就可以了。
【样例输入】
- 4 2
- 输入注释
- 约翰想要一排4头牛,但是任何两只公牛之间至少有两头奶牛
【样例输出】
- 6
【提示】
下面的就是约翰思考出可行的6种方案(C代表奶牛,B代表公牛)
CCCC
BCCC
CBCC
CCBC
CCCB
BCCB
【Solution】
dp[i][0]表示位置i不放公牛,dp[i][1]表示位置i放公牛。
当位置i不放公牛,位置i-1对其不产生影响,所以dp[i][0]可以从dp[i-1][0]和dp[i-1][1]转移过来。
当位置i放公牛,位置i-M一定不能放公牛,所以dp[i][1]可以从dp[i-M][0]转移过来。
还有一个难点在预处理上。在1~M中如果位置i放一头公牛那么就只能放那一头公牛,所以dp[i][1]=1。如果位置i不放牛,那么放公牛的方案就有i-1种,不放公牛的方案有1种,所以dp[i][0]=i-1+1=i。
总结一下,预处理时dp[i][1]=1,dp[i][0]=i;DP时dp[i][0]=dp[i-1][0]+dp[i-1][1],dp[i][1]=dp[i-M][0]。
AC代码:
- #include <cstdio>
- const int MOD=;
- int N,M;
- int dp[][];
- int main(){
- scanf("%d%d",&N,&M); dp[][]=;dp[][]=;
- for(int i=;i<=M;++i) dp[i][]=,dp[i][]=i;
- for(int i=M+;i<=N;++i){
- dp[i][]=dp[i-][]%MOD+dp[i-][]%MOD;
- dp[i][]=dp[i-M][]%MOD;
- }
- printf("%d",(dp[N][]+dp[N][])%MOD);
- return ;
- }
【OpenJudge9275】【Usaco2009 Feb】【递推】Bullcow的更多相关文章
- bzoj3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——递推 / 组合数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 对于这种有点巧妙的递推还是总是没有思路... 设计一个状态 f[i] 表示第 i 位置 ...
- BZOJ3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 30 Solved: 17[Sub ...
- BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛( dp )
水题...忘了取模就没1A了.... --------------------------------------------------------------------------- #incl ...
- 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 243 Solved: 167[S ...
- BZOJ_3398_[Usaco2009 Feb]Bullcow 牡牛和牝牛_组合数学
BZOJ_3398_[Usaco2009 Feb]Bullcow 牡牛和牝牛_组合数学 Description 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛, ...
- bzoj:3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛
Description 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡 ...
- 刷题向》关于一道比较优秀的递推型DP(openjudge9275)(EASY+)
先甩出传送门:http://noi.openjudge.cn/ch0206/9275/ 这道题比较经典, 最好不要看题解!!!!! 当然,如果你执意要看我也没有办法 首先,显然的我们可以用 f [ i ...
- 1578: [Usaco2009 Feb]Stock Market 股票市场
1578: [Usaco2009 Feb]Stock Market 股票市场 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 414 Solved: 1 ...
- 【BZOJ-2476】战场的数目 矩阵乘法 + 递推
2476: 战场的数目 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 58 Solved: 38[Submit][Status][Discuss] D ...
- 从一道NOI练习题说递推和递归
一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可 ...
随机推荐
- ubuntu 下安装 activate-power-mode
转自网络 被朋友圈中的atom的activate-power-mode 震撼到了,于是想试试. 步骤如下 首先安装atom: sudo add-apt-repository ppa:webupd8te ...
- 2017-2018-1 20179205《Linux内核原理与设计》第十周作业
<Linux内核原理与设计>第十周作业 教材17.19.20章学习及收获 1.在Linux以及所有unix系统中,设备被分为以下三种:块设备(blkdev)以块为单位寻址,通过块设备节点来 ...
- 细数雷军系成员,27家公司3家IPO
自 2004 年至今,作为天使投资人和顺为基金创始合伙人,雷军共投了移动互联网.电子商务.互联网社区等领域内的 27 家创业公司,其中欢聚时代.猎豹移动.迅雷三家公司成功上市.小米科技虽然还未 IPO ...
- 【swupdate文档 二】许可证
许可证 SWUpdate是免费软件.它的版权属于Stefano Babic和其他许多贡献代码的人(详情请参阅实际源代码和git提交信息). 您可以根据自由软件基金会发布的GNU通用公共许可证第2版的条 ...
- 【bzoj4518】征途
懒得推式子了,总之是个斜率优化…… 先化一下题目要求的式子,再写一下dp方程,然后就是很自然的斜率优化了qwq #include<bits/stdc++.h> #define N 3005 ...
- git - 使用原理
对git操作最大的功臣就是.git目录下的HEAD HEAD是什么 HEAD其实是一个类似于指针的东西,只不过这个指针的含义是指向当前的分支,当你再[ git checkout 分支 ] 的时候这个分 ...
- PIL处理图片信息
最近遇到了图片处理的一些问题,python提供了一些库可以很方便地帮助我们解决这些问题,在这里把我这几天的学习总结一下. 一.提取图片的RGB值 1.非代码:如果只是为了提取某张图片或者某个像素点的R ...
- JavaScript跨域解决方法大全
跨域的定义:JavaScript出于安全性考虑,同源策略机制对跨域访问做了限制.域仅仅是通过“URL的首部”字符串进行识别,“URL的首部”指window.location.protocol +win ...
- PHP设计模式二-------单例模式
1.单例模式的介绍 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点: 主要解决:一个全局使用的类频繁地创建与销毁. 关键代码:构造函数是私有的,克隆方法也是私有的. 1.1 懒汉式//1 ...
- 重装系统备份MYSQL数据(整库备份)
今天要重装Windows 8系统,但是我的Mysql里面数据太多,要备份成sql文件实在太麻烦,于是我听说可以直接拷贝数据文件夹,所以就试了,结果还成果了. 具体如下: 我安装的时候把数据文件夹就放在 ...