I - The Values You Can Make (背包求具体方案)
题目大意
给你n个数,让你用这n个数在组成k的情况下,找到所有的value,这些value也由这n个数组成,且这些value组合在一起能够组成k
解法
看到题目我的想法就是母函数= =不过wa了,后来发现因为母函数能找到这n个数所能形成的所有情况,但是可能两种情况是包含关系的。比如3,3,6这个数据可以形成6和9但是如果k是15的时候,你就不能得到因为9是由6生成的
dp[i][j]表示在和为i的情况下,能否得到j
那么当dp[i][j] = 1时,dp[i][j + c[k]]比然能得到,dp[i+c[k]][j+c[k]]也能得到。
C++代码
/**
6 18
5 6 1 10 12 2
dp[i-c[i]][k] -> dp[i][k],dp[i][k+c[i]]
*/ #include<bits/stdc++.h>
using namespace std; int a[];
int res[];
int dp[][];
int main(){
int n , m ;
cin >> n >> m;
for(int i = ; i <= n ; i++){
cin >> a[i];
}
sort(a+,a++n);
dp[][] = ;
for(int i = ;i <= n ; i++){
for(int j = m;j >= a[i];j --){
for(int k = ;k + a[i]<= m;k ++){
if(dp[j - a[i]][k]) dp[j][k] = dp[j][k+a[i]] = ;
}
}
}
int tot = ;
for(int i = ;i <= m; i ++) if(dp[m][i]) res[tot++] = i;
printf("%d\n",tot);
for(int i = ;i < tot;i ++) printf("%d ",res[i]);
}
I - The Values You Can Make (背包求具体方案)的更多相关文章
- P1474 货币系统 Money Systems(完全背包求填充方案数)
题目链接:https://www.luogu.org/problemnew/show/1474 题目大意:有V种货币,求用V种货币凑出面值N有多少种方案. 解题思路:就是完全背包问题,只是将求最大价值 ...
- P1466 集合 Subset Sums(01背包求填充方案数)
题目链接:https://www.luogu.org/problem/show?pid=1466 题目大意:对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合, ...
- HDU 2639(01背包求第K大值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...
- 关于01背包求第k优解
引用:http://szy961124.blog.163.com/blog/static/132346674201092775320970/ 求次优解.第K优解 对于求次优解.第K优解类的问题,如果相 ...
- 518-零钱兑换 II(完全背包-求方案总数)
518-零钱兑换 II(完全背包-求方案总数) 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, c ...
- poj3683(2-SAT 求任意方案)
基础的2-SAT求任意方案的题目. Priest John's Busiest Day Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- HDU 2639 01背包求第k大
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Bone Collector II---hdu2639(01背包求第k优解)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2639求01背包的第k大解.合并两个有序序列 选取物品i,或不选.最终的结果,是我们能在O(1)的时间内 ...
- HDU 1171 Big Event in HDU【01背包/求两堆数分别求和以后的差最小】
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
随机推荐
- linux安装配置Redis,Swoole扩展
我是使用的是lnmp环境(php5.6.3) 一.安装redis数据库(参考w3c手册) 下载地址:http://redis.io/download 本教程使用的最新文档版本为 2.8.17,下载并安 ...
- linux-ssh加密与https安全-9
非对称加密算法:RSA,DSA/DSS 对称加密算法:AES,RC4,3DES HASH算法:MD5,SHA1,SHA256 hash就是找到一种数据内容和数据存放地址之间的映射关系 (1) 文件校验 ...
- 编译caffe-gpu-cuda及cudnn-tar 下载地址
y下载 https://github.com/BVLC/caffe https://github.com/BVLC/caffe/archive/master.zip gcc caffe安装 有2个问题 ...
- hdu 1695 欧拉函数+容斥原理
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Android中StatFs获取系统/sdcard存储(剩余空间)大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 修改docker下mysql配置
1.在/home/smile/docker/mysql/config/目录下增加一个文件 my.cnf # Copyright (c) , Oracle and/or its affiliates. ...
- 后盾网lavarel视频项目---laravel 使用laracasts/flash插件提示信息
后盾网lavarel视频项目---laravel 使用laracasts/flash插件提示信息 一.总结 一句话总结: laracasts/flash插件的效果就是一个弹出的boostrap模块框, ...
- 微信小程序 API 网络(ajax)
网络 API 类似于 ajax 向服务器请求网络地址,唯一不同的是这个请求有很多的规则,且必须向服务器上请求,不能在本地请求 网络 发送请求: wx.request() 发起https网络请求 参数: ...
- 2019 ccpc 秦皇岛
D 如果1/n是有限小数,不停乘以10,一定在有限次之后成为一个整数. 10的质因子只有2和5,只要保证分母的质因子只有2和5即可 #include <iostream> #include ...
- pycharm运行正确但是不出结果
描述:之前用的好好的,突然有一天用pycharm运行程序,明明结果正确, 打印不出来结果,看下图 解决: 查看File Transfer有好多错误,意思是没有连接上服务器 [2018/12/8 21: ...