(子类)背包问题
Masker_43
这个作者很懒,什么都没留下…
展开
-
HDOJ 1114 【Piggy-Bank】
思路:首先,01背包是一定的,它的特殊之处有:1.必须装满到W,并且要判断出是否可以恰好装满2.要找出每个状态的最小金额针对第一点,有两种初始化方式:for(int i=1;i<=n;i++){ cin>>v[i]>>w[i]; dp[w[i]] = min(dp[w[i]] , v[i]);}dp[0] = 0;for(int...原创 2019-04-21 09:33:50 · 184 阅读 · 0 评论 -
【F - Piggy-Bank】
思路:完全背包,做过两遍了。内层循环顺序,因为同样的钱币可以选择多次。代码:62ms 1464kB//62ms 1464kB#include <iostream>#include <algorithm>#include <cstring>#define INF 0x3f3f3f3fusing namespace std;c...原创 2019-07-12 11:56:26 · 125 阅读 · 0 评论 -
洛谷 P1604【金明的预算方案】
题目链接一遍过题,甚是欣慰。依赖背包裸题。代码:54ms,928KB//54ms, 928KB #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int maxw = 32005;const int maxn...原创 2019-04-24 19:54:43 · 128 阅读 · 0 评论 -
HDOJ 3449【Consumer】
题目链接存疑:第一种代码为何WA?思路:注意题面没说多组用例,但是实际上是,很坑。依赖背包,即每组中的物品由一个主件和若干附件组成,若买任意附件则必须先买主件。本题中主件价值为零,价格倒是挺贵。首先按照背包九讲中的做法,不知为何WA:对每一组中的物品进行泛化(即先进行一次Sub_Pack,详见背包九讲)。对泛化后的物品进行Main_Pack。(均为01Pack)代码:WA:85...原创 2019-04-24 19:26:18 · 148 阅读 · 0 评论 -
HDOJ 1712【ACboy needs your help】
题目链接一题(一遍过的题),分组背包裸题,详见通天之分组背包(pre blog)。//296MS 1456K#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int maxn = 105;int n,W;int ...原创 2019-04-23 21:20:00 · 130 阅读 · 0 评论 -
洛谷 P1757【通天之分组背包】
题目链接思路:很简单的分组背包裸题,在做过AreYouBusy(pre blog)之后已经可以一遍过。每组选一,即AtMostOne问题。一组一组平推,每次用rec数组记录,属于做过一遍就不会忘的方法。注意转移方程不要写错,dp[ j ] 代表可能已经使用了本组中某物品之后得到的最大值,rec[ j - w[i] ] + v[ i ] 代表是第一次选本组中的物品。代码://16m...原创 2019-04-23 20:53:05 · 291 阅读 · 0 评论 -
HDOJ 2159【Fate】
题目链接二维费用的背包问题,第二维费用即为数量。要仔细想想如何打背包,本题中只能是:dp[i][j] 这一格代表 最多花 i 忍耐度,最多打 j 个怪 的限制下,能够获得的最大经验值。另一种想法花给定的经验值获得最少的忍耐度的想法是行不通的,下文会讲。AC代码:c#include <iostream>#include <cstring>#include ...原创 2019-04-23 20:01:57 · 139 阅读 · 0 评论 -
HDOJ 3466【Proud Merchants】
WA代码:46MS 1488K#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int maxn = 505 ;const int maxw = 5005; int dp [maxw];int cost[maxw];s...原创 2019-04-18 21:50:16 · 156 阅读 · 0 评论 -
洛谷 P1616【疯狂的采药】
原题链接思路:完全背包裸题。题目中强调大数据,然而也并不需要做特殊的优化。代码:在这里插入代码片原创 2019-04-17 21:47:38 · 281 阅读 · 0 评论 -
背包问题学习路径
切身受益,故而转载:学习背包问题,需要:1.背包九讲2.背包九讲详解转载 2019-04-21 19:40:11 · 223 阅读 · 0 评论 -
HDOJ 1059【Dividing】
原题链接多重背包,装满,w[i] == v[i]因为是第一次做多重背包,我首先试图将所有可能装出的重量枚举出来,TLE。代码如下://1000MS(TLE) 1520K#include <iostream>#include <cstring>using namespace std;const int maxn = 10;const int ma...原创 2019-04-21 19:20:19 · 186 阅读 · 0 评论 -
洛谷 P1853【投资的最大效益】
原题链接思路:不难看出是完全背包类问题,只是要明确一点,“花钱”买债券所花的钱并没有真正的花出去,关键就在于随时都可以卖出任何所持有的债券。那么,实际上我们可以认为每一年都先把所有持有的债券变卖套现,然后拿着全部的现金重新购买债券(重新打背包),寻找能够获得的最多的金钱。明白了这一点,就可以写出最简单的一版答案。dp【】记录 j 金钱能够获得的最多的本金+利润。注意答案是最后能到达的最大背...原创 2019-04-21 13:34:46 · 687 阅读 · 1 评论 -
【R - Milking Time】
思路:不是普通01背包吗?有两个问题:手推样例就可以发现,如果不对区间 sort,则裸的01背包无法得出正确结果。即使根据右端点排序后进行01背包,可能是对的,但是会 TLE。那么现在为了降低时间复杂度,将对每个点时间的 dp 变为对每个物品(区间)的 dp。又出现一个问题:dp[i] 应该代表 “ 必须使用 i 区间 ”,还是 “ 前 i 个区间可以得到的最优解 ” ?答案:...原创 2019-07-27 22:15:50 · 197 阅读 · 0 评论