#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.