AT685 準急

传送门:AT685 準急

动态规划,fi0{f_i}_0 表示第 ii 个点不停靠方案数,fi1{f_i}_1 表示第 ii 个点停靠方案数。

代码:

#include <iostream>
using namespace std;

#define int long long
const long long N = 1e6 + 5, MOD = 1e9 + 7;
int f[N][5]; // f[i][0] 表示第 i 个点不停靠方案数,f[i][1] 表示第 i 个点停靠方案数

signed main()
{
	int n, k;
	cin >> n >> k;
	f[1][1] = f[0][0] = f[0][1] = 1;
	for (int i = 2; i <= n; i++)
	{
		f[i][0] = (f[i - 1][0] + f[i - 1][1]) % MOD;
		f[i][1] = f[i][0];
		if (i >= k)
		{
			f[i][1] = (f[i][1] - f[i - k][0] + MOD * 2) % MOD;
		}
	}
	cout << f[n][1] << endl;
	return 0;
}
posted @ 2022-01-01 10:53  HappyBobb  阅读(9)  评论(0)    收藏  举报  来源