![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
Dawn_mao
这个作者很懒,什么都没留下…
展开
-
P1216 数字三角形(洛谷刷题记)
P1216 数字三角形(洛谷刷题记) 题目 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 范围 1 <= n <= 1000,所有输入数在区间 [0,100] 内 分析 对于每个数来说,它只能来自于它的左上角那个数以及正上方那个数,故只需要将这二者取原创 2022-05-07 21:46:18 · 343 阅读 · 0 评论 -
洛谷刷题记 P1802 5倍经验日
P1802 5倍经验日(洛谷刷题记) 题目 第一行两个数,n(n表示有多少个高等级的好友)和 x(玩家拥有的药丸数)。 后面 n 行每行三个数,分别表示失败时获得的经验 lose i ,胜利时的经验 win i 和打过要至少使用的药数量 use i 。 说明:每个药丸只能用一次,用药量没达到最少打败该人所需的属性药药量,则打这个人必输。例如用 2 个药去打别人,别人却表明 3 个药才能打过,那么相当于输了并且这两个属性药浪费了。 范围 n,x,use <= 1e3;win,lose <= 1e6原创 2022-05-06 16:26:26 · 313 阅读 · 0 评论 -
洛谷刷题记 P1616 疯狂的采药
P1616 疯狂的采药(洛谷刷题记) 题目信息 输入第一行有两个整数,分别代表总共能够用来采药的时间 t 和代表山洞里的草药的数目 m。 第 2 到第 (m + 1) 行,每行两个整数,a,b分别表示每种草药的时间和该草药的价值 m <= 1e4,t<=1e7,m*t<=1e7,ai,bi <= 1e4; 分析 完全背包,但是:极限情况下,时间乘以药草价值 1e7*1e4 = 1e11,超过了int,所以要开long long int 约1e9,long long 约1e18 代码原创 2022-05-06 14:32:36 · 179 阅读 · 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 · 236 阅读 · 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 · 438 阅读 · 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 · 392 阅读 · 0 评论