目录问题:动态规划思路:0-1背包完全背包多重背包混合背包二维费用背包分组背包问题:给定3个物品a 价值1000, 重量1kgb 价值2000, 重量4kgc 价值1500, 重量3kg用容量为4kg的背包最多可以装价值多少的物品?背包问题就是类似这种给定容量求最优解的问题,有很多种,这里说的是01背包问题。01背包:所有物品只有一个,只所以背包中任意物品的的数量只可能是0 或者 1。动态规划思路
各种各样的基础背包 0-1 背包 非常朴素,复杂度 \(O(nV)\) void z_o_pack(int c,int v) { for(int i=V;i>=c;i--) dp[i]=max(dp[i],dp[i-c]+v); } 完全背包 复杂度 \(O(nV)\) void comp_pack ...
转载
2021-07-28 13:57:00
88阅读
2评论
题目:思路:核心代码:n,m=map(int,input().split())
N=110
v=[[0]*N for _ in range(N)]
w=[[0]*N for _ in range(N)]
s=[0]*N
f=[[0]*N for _ in range(N)]
for i in range(1,n+1):
s[i] = int(input())
for j in ra
原创
2024-07-23 21:01:42
3阅读
题目:和01背包问题差距在物品可以无限取用。思考方式可以借鉴。对于f[i][j]的定义是前 i个物品,背包容量 j下的最优解(最大价值)。仿照01背包问题考虑是否包含第i个物品,并且包含几个。但会超时间。n,m=map(int,input().split())
v=[0]*(n+1)
w=[0]*(n+1)
f=[[0]*(m+1) for _ in range(n+1)]
for i in ra
原创
2024-07-17 20:43:58
0阅读
题目:思路:核心代码(暴力朴素做法):n,m = map(int,input().split())
N=110
v=[0]*N
w=[0]*N
s=[0]*N
f=[[0]*N for _ in range(N)]
for i in range(1,n+1):
v[i],w[i],s[i]=map(int,input().split())
for i in range(1,n+1):
原创
2024-07-22 21:31:20
0阅读
题目:动态规划是不断决策求最优解的过程,「0-1 背包」即是不断对第 i个物品的做出决策,「0-1」正好代表不选与选两种决定。动态规划的考虑方向思路1二维:对于f[i][j]的定义是前 i个物品,背包容量 j下的最优解(最大价值)。然后需要考虑两种情况。第一种是当前背包容量不够(j<v[i])因此前 i个物品最优解即为前 i−1个物品最优解,对应代码:f[i][j] = f[i - 1][j
原创
2024-07-16 22:00:30
0阅读
首先不得不说的是dp真的很神奇(dp即动态规划,在我看来就是将最优解推到当前的一个状态转移过程,对于刚接触的小
原创
2022-09-23 10:51:13
107阅读
小明同学在参加一场考试,考试时间2个小时。试卷上一共有n道题目,小明要在规
原创
2022-10-26 20:07:04
32阅读
量和背包容积。接下来有 N 行,每
原创
2023-02-08 08:06:29
105阅读
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式 输出一个整数,表示最大价值。
原创
2022-07-01 12:15:13
97阅读
文章目录QuestionIdeasCodeQuestion有 N 组物品和一个容量是 V 的背包。每组物品有若
原创
2022-07-01 13:08:34
85阅读
目录第一讲 01背包问题第二讲 完全背包问题第三讲 多重背包问题第四讲 混合三种背包问题第五讲 二维费用的背包问题第六讲 分组的背包问题第七讲 有依赖的背包问题第八讲 泛化物品第九讲
转载
2021-09-14 16:18:51
469阅读
思路:dp[i][j]表示的是前i个物品背包所能容纳不超过bagw的最大价值.#include<iostream>usingnamespacestd;constintmaxn=100;intmain(){intn,bagw;intw[maxn],v[maxn];intdp[maxn][maxn];cin>>n;for(inti=0;i<n;i++){cin>&g
原创
2020-02-28 10:15:48
670阅读
题目大意: 有n" role="presentation">nn个游戏平台,每个游戏平台有C[i]" role="presentation">C[i]C[i]个游戏,但是需要花W[i]" role="presentation">W[i]W[i]块钱才能买这个游戏平台。...
转载
2018-07-09 07:31:00
65阅读
2评论
记录结果再利用的"动态规划"DP做题的步骤> 1. 确定状态变量 dp[i]/dp[i][j]的含义;> 2. 确定状态转移方程;> 3. 确定边界条件;> 4. 确定递推顺序题目1:01背包有 n 个重量和价值分别为 w 和 v 的物品。从这些物品中挑选总重量不超过 W 的物品。求所有挑选方案中价值总和的最大值思路dp[i+1][j] 表示从前i个物品中选出总重量不超过j的物品时总价值的最大值;初始化:dp[0][j]=0,dp[i][0
原创
2021-06-07 21:41:14
625阅读
背包问题大意:给你一个背包有一定的容量,再给你一下些物品,物品有自己的体积和价值,请你选择价值和最大的一
原创
2023-12-30 08:09:53
83阅读
文章目录QuestionIdeasCodeQuestion有 N 种物品和一个容量是 V 的背包。第 i 种
原创
2022-07-01 13:08:42
56阅读
文章目录QuestionIdeasCodeQuestion你有一
原创
2022-07-01 13:12:25
142阅读
01背包问题
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。
第 i 件物品的体积是 v<sub>i</sub>,价值是 w<sub>i</sub>。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。
输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。
接下来有 N 行
原创
2023-06-20 20:08:35
84阅读
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式 输出一个整数,表示最大价值。
原创
2022-07-01 12:13:24
105阅读