Problem A Secret of Chocolate Poles

Solved.

题意:有两种物品长度为1以及k, 求在长度为l 的箱子里放置物品的方案数, 每两个物品间有一个长度为1的空白

思路:$dp[i][0/1]$ $i$表示当前高度, $0/1$表示放不放

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 typedef long long ll;
 6 
 7 const int maxn = 1e3 + 10;
 8 
 9 int l, k;
10 ll dp[maxn][2];
11 
12 int main()
13 {
14     while(~scanf("%d %d", &l, &k))
15     {
16         memset(dp, 0, sizeof dp);
17         dp[1][1] = 1;
18         dp[k][1] = 1;
19         for(int i = 1; i <= l; ++i)
20         {
21             dp[i + 1][0] += dp[i][1];
22             dp[i + 1][1] += dp[i][0];
23             dp[i + k][1] += dp[i][0];
24         }
25         ll ans = 0;
26         for(int i = 1; i <= l; ++i) ans += dp[i][1];
27         printf("%lld\n", ans);
28     }
29     return 0;
30 }
View Code

相关文章: