动态规划
wickked
这个作者很懒,什么都没留下…
展开
-
菜鸡acmer理解 【动态规划】01背包问题
下定决心,这次总结完一定要深刻理解,不能再学了忘忘了学了。。。。。。 01背包问题描述 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 大体思路如下: 根据动态规划解题的步骤:问题抽象 -> 建立模型 ->寻找约束条件 ->判断是否满足最优性原理 -> 找大问题与小问题的递推关系式(最重要) -> 填表(模拟试一下)...原创 2019-08-19 15:07:11 · 401 阅读 · 3 评论 -
菜鸡acmer理解 【动态规划】完全背包问题
完全背包问题: 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 因为都是背包问题,我们将01背包和完全背包放在一起理解 0-1背包问题:特点:每种物品仅有一件,可以选择放或不放。 根据状态转移方程:第 i 次决策取决于第 i - 1次决策。这是 j 逆序遍历的原因。...原创 2019-08-20 09:32:33 · 460 阅读 · 0 评论 -
菜鸡acmer理解 【动态规划】01背包和完全背包一维数组的比较
01背包的一维数组代码: for(int i=1;i<=n;i++) for(int j=c;j>=w[i];j--) ///c为总容量 dp[j]=max(dp[j],dp[j-w[i]]+v[i]); printf("%d\n",dp[c]); 代码解释: 声明dp数组,表示面对前i个物品,能获得的最大价值,通过这样的理解我们可以得到他...原创 2019-08-20 11:16:10 · 190 阅读 · 0 评论 -
菜鸡acmer理解 【动态规划】多重背包
一、题目 有 n种物品和一个容量为 m 的背包。第 i 种物品最多有 num i 件可用,每件耗费的空间是 vi ,价值是 w i 。求解将哪些物品装入背包可使这些物品的耗费的空间总和不超过背包容量,且价值总和最大。 二、大体思路 第一种思路: 首先这种可以把物品拆开,把相同的num[i]件物品 看成 价值跟重量相同的num[i]件不同的物品,那么!!是不是就转化成了一个规模稍微大一点的01背包了...原创 2019-08-20 11:38:03 · 214 阅读 · 0 评论 -
菜鸡acmer理解 【动态规划】数位dp
数位 DP 问题往往都是这样的题型,给定一个闭区间[L,R],让你求这个区间中满足 某种条件的数的总数。 数位DP是一个纯暴力算法,一般用记忆化搜索(DP)实现。 纯暴力: for(int i=le;i<=ri;i++) if(right(i)) ans++; 优雅的暴力: 控制上界枚举,从最高位开始往下枚举,例如:ri=213,那么我们从百位开始枚举:百位可能的情况有0,1...原创 2019-08-29 11:24:35 · 162 阅读 · 0 评论