AT685 準急
传送门:AT685 準急
动态规划, 表示第 个点不停靠方案数, 表示第 个点停靠方案数。
代码:
#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;
}

浙公网安备 33010602011771号