Codeforces Round #360 (Div. 2) E. The Values You Can Make dp ,滚动数组
2017-03-18 11:38
423 查看
题目地址:这里
题意:所有能组成K的C的子集方案中,能拼出哪些面额
解法:DP。n^3dpdp[i][j][k]表示用到了第i个数,当前和为j,子集和为k可不可行
裸的会稍微卡一下空间,这个滚动数组优化,或者直接用bool就可以了。我滚动数组优化的。
题意:所有能组成K的C的子集方案中,能拼出哪些面额
解法:DP。n^3dpdp[i][j][k]表示用到了第i个数,当前和为j,子集和为k可不可行
裸的会稍微卡一下空间,这个滚动数组优化,或者直接用bool就可以了。我滚动数组优化的。
//CF 688E #include <bits/stdc++.h> using namespace std; const int maxn = 505; int n, k; int dp[2][maxn][maxn]; //dp[i][j][k]表示用到了第i个数,当前和为j,子集和为k可不可行 int now = 0, pre = 1; int main(){ scanf("%d%d", &n, &k); dp[0][0][0] = 1; for(int i = 1; i <= n; i++){ swap(now, pre); int x; scanf("%d", &x);//对于x选和不选,分当前和和子集和两种 for(int j = 0; j <= 500; j++){ for(int k = 0; k <= j; k++){ dp[now][j][k] |= dp[pre][j][k]; if(j >= x) dp[now][j][k] |= dp[pre][j-x][k]; if(j >= x && k >= x) dp[now][j][k] |= dp[pre][j-x][k-x]; } } } vector <int> ans; for(int i = 0; i <= 500; i++){ if(dp[now][k][i]) ans.push_back(i); } printf("%d\n", ans.size()); for(int i = 0; i < ans.size(); i++){ printf("%d ", ans[i]); } }
相关文章推荐
- Codeforces Round #360 (Div. 2) E. The Values You Can Make DP
- Codeforces Round #360 (Div. 2) E. The Values You Can Make dp
- Codeforces Round #360 (Div. 1) C. The Values You Can Make(DP)
- Codeforces Round #360 (Div. 2) E The Values You Can Make(DP)
- Codeforces Round #360 (Div. 2) E The Values You Can Make(DP)
- Codeforces Round #360 (Div. 2) -- E. The Values You Can Make (DP)
- Codeforces Round #360 (Div.1) C.The Values You Can Make
- Codeforces Round #360 (Div. 2) E. The Values You Can Make
- Codeforces Round #360 (Div. 2) E. The Values You Can Make 01背包
- Codeforces Round #360 (Div. 2) E. The Values You Can Make
- Codeforces Round #360 (Div. 1)C - The Values You Can Make
- [DP] Codeforces 687C #360 (Div. 1) C. The Values You Can Make
- The Values You Can Make CodeForces - 687C (dp)
- 【Codeforces Round 274 (Div 2)E】【DP 成段更新 打标记法 滚动数组】Riding in a Lift 乘坐k次电梯避免到达b层的方案数
- codeforces 687C - The Values You Can Make(背包+滚动数组)
- 【Codeforces Round 273 (Div 2)D】【DP 滚动数组】 Red-Green Towers 两种颜色积木拼搭最高锯齿楼每层颜色相同的总方案数
- Codeforces Round #407 (Div. 2)-E-The Great Mixing-滚动数组或者dfs
- Codeforces 689 C The Values You Can Make(dp)
- 【Codeforces Round 333 (Div 2)E】【期望DP概率做法 树状数组转前缀和】Kleofáš and the n-thlon n场比赛m个人获得总名次的期望
- CF687C. The Values You Can Make[背包DP]