1 条题解
-
0
#include<bits/stdc++.h> using namespace std; #define ll long long const int mod = 1e9 + 7; int n, k; int main() { cin >> n >> k; //n个空位,至少隔开k个空位 vector<ll> dp(n + 5, 0); //dp[i]表示前i个位置合法的放置方案数 dp[0] = 1; //初始化空方案为1种 for (int i = 1; i <= n; i++) {//枚举n个位置,在i位置放油桶有两种选择 dp[i] = dp[i - 1]; //第i个位置不放油桶则就是i-1位置的方案数 //放油桶情况,分为前面位置能否放置油桶: //能放油桶,则前i-k-1个位置的仍以合法方案都可以放置油桶,加上该方案数 if (i - k - 1 >= 1)dp[i] = (dp[i] + dp[i - k - 1]) % mod; //不满足前面位置能放油桶,则只在该位置放置油桶 else dp[i] = (dp[i - 1] + 1) % mod; } cout << dp[n]; return 0; }
- 1
信息
- ID
- 466
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 81
- 已通过
- 24
- 上传者