背包问题
文章平均质量分 83
化身孤岛的鲸o
我祈祷拥有一颗透明的心灵
展开
-
PIPIOJ 1079: PIPI的存钱罐 完全背包
题目:http://39.106.164.46/problem.php?id=1079思路:题目要求装满,然后又是完全背包。注意初始化时将dp初始化为INF,dp[0]=0即可。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<ve原创 2020-10-12 13:30:10 · 1239 阅读 · 0 评论 -
PAT顶级 1002 Business (35分) 排序+01背包
PAT顶级 1002 Business (35分) 排序+01背包题解:披着狼皮的01背包问题首先我们将每个任务按照截止时间ddl升序排序然后按照01背包做就可以啦~代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#includ...原创 2020-02-06 23:51:01 · 264 阅读 · 0 评论 -
洛谷 P1855 榨取kkksc03 多维背包问题
洛谷 P1855 榨取kkksc03 多维背包问题题解:其实就是多维的01背包问题。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#inclu...原创 2020-02-06 18:24:17 · 187 阅读 · 0 评论 -
洛谷 P1417 烹调方案 排序+01背包
洛谷 P1417 烹调方案 排序+01背包题解:现在考虑相邻的两个物品x,y。假设现在已经耗费p的时间:那么首先装物品x所获得的价值为:a[x]-(p+c[x])*b[x]+a[y]-(p+c[x]+c[y])*b[y] ①那么首先装物品y所获得的价值为:a[y]-(p+c[y])*b[y]+a[x]-(p+c[y]+c[x])*b[x] ②对这两个式子化简,得到①>②的条件是c[x...原创 2020-02-06 17:33:21 · 153 阅读 · 0 评论 -
关于背包问题dp数组的初始化
关于初始化的一些小技巧:使用一维数组:(1)如果题目没有要求恰好把背包装满,那么很简单,dp数组全部初始化为0即可。(2)如果题目要求恰好把背包装满,且求的的是价值的最大值,那么dp数组全部初始化为-INF,仅仅把dp[0]置为0。(3)如果题目要求恰好把背包装满,但是求的是价值的最小值,那么dp数组全部初始化为INF,仅仅把dp[0]置为0。...原创 2020-02-04 23:58:04 · 876 阅读 · 1 评论 -
洛谷 P1282 多米诺骨牌 巧妙的01背包问题
洛谷 P1282 多米诺骨牌 巧妙的01背包问题代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#in...原创 2020-02-04 23:18:00 · 206 阅读 · 0 评论 -
洛谷 P1064 金明的预算方案 有依赖的背包问题
洛谷 P1064 金明的预算方案 有依赖的背包问题代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#i...原创 2020-02-04 21:58:28 · 216 阅读 · 0 评论 -
洛谷P1060 开心的今明 01背包问题(模板)
题目描述Solution:这是一道简单的01背包问题,用到了动态规划的思想。代码如下:#include<iostream>#include<algorithm>using namespace std;int w[30],cost[30],dp[50000];//w数组为重要度,cost数组为money;int n,m;//n是总物品个数,m是总钱数in...原创 2019-04-10 15:13:55 · 262 阅读 · 0 评论 -
洛谷 P1616——疯狂地采药 完全背包问题(模板)
Solution:这是一道完全背包问题。因为每种药物的数量无限,所以我们就不能继续使用解决01背包问题的方法。完全背包需要正推,因为每种物品可以装的数量在0~m/cost[i]之间,所以我们要把j从cost[i]开始,一直递增到m。代码如下:#include<iostream>#include<math.h>#define MAX 100005using n...原创 2019-04-15 18:29:12 · 330 阅读 · 0 评论 -
PAT甲级 1068 Find More Coins 01背包
Solution:题目要求:给出n个金币,每个金币有自己的面额,再给出需要支付的钱m,要用一些金币来恰好购买一个物品,并输出这些金币的面额,若不存在恰好支付的情况,输出“No Solution”。其实就是01背包问题稍微变化了一下。代码如下://01背包#include<iostream>#include<math.h>#include<alg...原创 2019-09-01 14:36:09 · 244 阅读 · 0 评论