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 · 665 阅读 · 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 · 379 阅读 · 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 longint 约1e9,long long 约1e18代码原创 2022-05-06 14:32:36 · 258 阅读 · 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 · 313 阅读 · 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 · 705 阅读 · 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 · 691 阅读 · 0 评论
分享