随笔分类 - 动态规划专项
摘要:题目链接 https://www.acwing.com/problem/content/900/ 题目思路 这道题我们可以从最底层考虑,若要使当前路径之和最大,选择当前的所选值加左上/右上之和最大即可 因为有负数情况,所以要把边界设置好 题目代码 #include <iostream> #inclu
阅读全文
摘要:题目链接 https://www.acwing.com/problem/content/5/ 题目思路 多重背包问题的进阶版 因为数据量大,所以不能用三重循环以及二维数组 所以可以将物品的体积和价值利用二进制形式存起来 然后再进行一维优化即可 题目代码 #include <iostream> #in
阅读全文
摘要:题目链接 https://www.acwing.com/problem/content/4/ 题目思路 完全背包问题进阶版 每种物品有了数量限制,所以需要判断要拿多少当前物品,其他与完全背包问题类似 题目代码 #include <iostream> #include <algorithm> usin
阅读全文
摘要:题目链接 https://www.acwing.com/problem/content/3/ 题目思路 01背包进阶版,每种物品有无限个 所以就是将每种物品的体积和价值存下来,然后遍历每种物品,在当前体积的限制下求可拿物品的价值最优解 题目代码 #include <iostream> #includ
阅读全文
摘要:题目链接 https://www.acwing.com/problem/content/2/ 题目思路 梦开始的地方,01背包的每个物品只可以选一次 DP思想:“最后” 每次考虑的是最后是否为最优解,从最后一步的最优解向前推,推出每一步的最优解。 01背包就是判断每步是拿当前物品和不拿当前物品的价值
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1048 题目思路 经典01背包问题,每一步的状态为拿当前物品和不拿当前物品的价值最大值 #include <iostream> #include <algorithm> using namespace std; cons
阅读全文
摘要:题目链接 https://www.acwing.com/problem/content/1017/ 题目思路 本题是经典的线性DP 如上图所示,每一步的最优解即为上一步的最大值加当前地方花生数 题目代码 #include <iostream> #include <algorithm> using n
阅读全文