![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
背包
MatrixYg
暂无
展开
-
背包问题_01背包
1:hdu2602.典型的01背包问题,DP典型。给出代码:#include<iostream>#include<vector>#include<algorithm>#include<cstring>using namespace std;const int maxn = 1100;int dp[maxn];int v[maxn]...原创 2018-11-02 21:27:59 · 141 阅读 · 0 评论 -
【HDU1114】完全背包
1.题目链接。题目说了很多,但是意思就是给你一个储蓄罐,空着的时候的重量和最多能够承受的重量,然后给你一些硬币,这些硬币有价值和重量,找出把这个储蓄罐装满的时候硬币加起来最小的值。2.这很类似01背包的问题,但是也有区别。我们知道在01背包中每个物品只有一个,但是这里的硬币(物品)无限多。我们把这种问题叫做完全背包。3.完全背包我们需要考虑的问题不再是这种物品拿与不拿,而是拿几个的问题。所...原创 2019-02-06 22:47:06 · 155 阅读 · 0 评论 -
【HDU2191】多重背包
1.题目链接。中文题目就不再说题意了。首先我们知道这个题目的意思就是给你n中物品,每种物品有重量,价值,数量这三个属性。然后给定一个数值的钱,问这些钱最可以买多少东西。其实和背包的思想是一样的,就是容量为V的背包最多可以装多少东西。2.分析:这和我们之前说到的01背包和完全背包都是不一样的,因为01背包中物品只有一个,所以就是拿与不拿的问题,完全背包中物品的数量是无限的,所以就是拿多少个的问题...原创 2019-02-07 21:23:38 · 152 阅读 · 0 评论 -
【HDU2844】二进制优化多重背包
1.题目链接。首先这个题的意思就是:n种硬币,每种硬币有面值和数量,给你m,让你求从1到m这m个数据,有多少个可以用这些硬币凑出来。2.我们分析一下这个问题,似乎是一个背包问题,但是这个是让我们求方案数,而不是最大能够装多少之类的。我们还是按照我们之前的DP方程,在最朴素的多重背包问题种,DP[k]代表容量为k的时候我们最多可以装多少东西,和这个问题好像没啥关系。那么现在就有两个解决方案:把这...原创 2019-02-08 20:21:07 · 397 阅读 · 0 评论 -
【HDU1171】01背包
1.题目链接。题目大意:给定一些物品,这些物品有价值和数量,把他们经可能的分成价值相等的两份。2.这是看上去似乎是一个类似与贪心的解法,我们知道,如果恰好能够均分,那么是最好不过了。但是如果不能均分,该怎么贪心呢?似乎没有什么好的解决方案。我们可以使用背包的思想,假设总的价值是sum,我们可以做一个sum/2的容量的背包,我们尽可能多的装这些东西,那么分成的两份一定是最优的。至于证明嘛,口糊一...原创 2019-02-10 21:42:07 · 153 阅读 · 0 评论 -
【HDU5890】bitset优化背包
1.题目链接。题目大意,给出n个数据,从中删除1-3个,在剩下的数据中选取10个数问这些数据能不能组成87.2.emmm。最开始看到这个题瞬间想到的就是母函数,但是分析了一下,如果那样做需要枚举所有的组合,显然是不可能的,立刻否定了这个想法。然后想背包,想到了三维dp[i][j][k]:前i个数据里面选j个和是k。这样似乎有门,最后看了一下询问,发现询问是远比答案的数量大的,所以先预处理好,询...原创 2019-03-01 19:08:56 · 326 阅读 · 0 评论