背包
Dawn_mao
这个作者很懒,什么都没留下…
展开
-
洛谷刷题记 P1616 疯狂的采药
P1616 疯狂的采药(洛谷刷题记)题目信息输入第一行有两个整数,分别代表总共能够用来采药的时间 t 和代表山洞里的草药的数目 m。第 2 到第 (m + 1) 行,每行两个整数,a,b分别表示每种草药的时间和该草药的价值m <= 1e4,t<=1e7,m*t<=1e7,ai,bi <= 1e4;分析完全背包,但是:极限情况下,时间乘以药草价值 1e7*1e4 = 1e11,超过了int,所以要开long longint 约1e9,long long 约1e18代码原创 2022-05-06 14:32:36 · 177 阅读 · 0 评论 -
多重背包_DP一维数组
多重背包题目描述有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。解释零一背包只有每个物品的价值和体积,对应核心代码for(int i=1;i<=n;i++) for(int j=m;j>=v[i];j--) f[j] = max(f[j],f[j - v[i]] + w[i]);由于多重背包只是在零一背包的基础上增加了数量限制,故原创 2022-05-05 23:27:45 · 232 阅读 · 0 评论 -
完全背包_DP二维数组及优化一维数组
完全背包问题描述有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。DP_二维数组#include<bits/stdc++.h>using namespace std;const int N = 1010;int n,m;int v[N],w[N],f[N][N]={0};int main(){ cin >&g原创 2022-05-04 14:34:41 · 433 阅读 · 0 评论 -
零一背包_DP二维数组及优化及DP一维数组
零一背包题目描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。DP_二维数组代码#include<bits/stdc++.h>using namespace std;const int N = 1001;int n,m;int v[N],w[N],f[N][N]={0};int main(){ cin >&原创 2022-05-04 11:10:23 · 386 阅读 · 0 评论