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 }