#3873. 核电站(C++四级)
核电站(C++四级)
题目描述
一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。
任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数
时间限制:6000
内存限制:131072
输入
只一行,两个正整数N,M( 1 < N < 50,2 ≤ M ≤ 5 )
输出
一个正整数S,表示方案总数。
样例输入
4 3
样例输出
13
解析:针对每一个坑,有m种状态,分别是不放,是连续第1到m-1个放置的。针对这m个状态,可以得到转移方程:
dp[i][0]=dp[i-1][0]+dp[i-1][1]+...+dp[i-1][m-1]
dp[i][j]=dp[i-1][j-1];
因为答案是dp[n][0]+dp[n][1]+...dp[n][m-1],这个值正好是dp[n+1][0]的值,所以动规的时候循环多做一次,dp[n+1][0]就是答案
Limitation
1s, 1024KiB for each test case.