【OpenJudge9275】【Usaco2009 Feb】【递推】Bullcow
2016-10-27 12:47
281 查看
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。
总结一下,[b]预处理时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][/b]。
AC代码:
#include <cstdio> const int MOD=5000011; int N,M; int dp[100010][2]; int main(){ scanf("%d%d",&N,&M); dp[0][0]=1;dp[0][1]=0; for(int i=1;i<=M;++i) dp[i][1]=1,dp[i][0]=i; for(int i=M+1;i<=N;++i){ dp[i][0]=dp[i-1][1]%MOD+dp[i-1][0]%MOD; dp[i][1]=dp[i-M][0]%MOD; } printf("%d",(dp [1]+dp [0])%MOD); return 0; }
相关文章推荐
- BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛|动态规划|排列组合
- 【排列组合 乘法逆元】【bzoj 3398】: [Usaco2009 Feb]Bullcow 牡牛和牝牛
- BZOJ3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛
- 【bzoj3398】【Usaco2009 Feb】【Bullcow 牡牛和牝牛】【组合数学】
- 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
- bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛 (dp+前缀)
- 【BZOJ】【3398】【USACO 2009 Feb】Bullcow 牡牛和牝牛
- 9275:[Usaco2009 Feb]Bullcow 题解
- 【openjudge 9275】[2.6基本算法之动态规划][Usaco2009 Feb]Bullcow(dp)
- bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 动态规划
- BZOJ3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
- [BZOJ3398][Usaco2009 Feb]Bullcow 牡牛和牝牛(dp)
- BZOJ_3398_[Usaco2009 Feb]Bullcow 牡牛和牝牛_组合数学
- bzoj:3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛
- bzoj3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
- bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(DP)
- bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(dp+前缀和)
- 【bzoj3398】[Usaco2009 Feb]Bullcow 牡牛和牝牛 dp
- bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛【dp】
- BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛( dp )