递推型DP——USACO 2009 February Silver bull and cow
Posted on 2011-09-01 21:15 huhuuu 阅读(170) 评论(0) 编辑 收藏 举报题意:N头牛 公牛与公牛之间最小间隔K头母牛
之前用排列组合的方法去思考,数据大,不能解
i<=k
f[0]=i+1
当i头牛是母牛时,没什么限制,f[i]+=f[i-1]
当i头是公牛时,之前要有K头奶牛,f[i]+=f[i-k-1]
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h>
int dp[100009];
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
int i;
for(i=0;i<=n;i++)
{
if(i<=k)
dp[i]=i+1;
else
dp[i]=(dp[i-1]+dp[i-k-1])%5000011;
}
printf("%d\n",dp[n]);
}
}