这短时间看了论文《背包九讲》,看到背包问题解法中的优美之处也看到背包问题在现实中的应用,总结出一句话:背包问题值得一看。
背包问题可以概括为这样的模型:有若干种选择,每种选择有一定的代价和价值,做某些选择会得到特定的状态,问我们在约定的条件下怎么得到特定的状态?这里的状态可以是代价和或者价值和或者由其他这两者组合而来的状态。这类问题需要枚举每种状态,但是可以通过动态规划减少枚举的次数,提高效率,主要思想是每次都利用前面得到的状态进行转移得到当前的状态。这类问题很少能用贪心的,首先,贪心很难证明策略是否正确,其次贪心必定使得枚举量大量减少,会导致结果错误。
个人认为背包九讲中的很多模型本质都是两种模型:01背包模型、完全背包模型。大家可以把这两种模型理解透彻,然后再看其他模型,这样必定事半功倍。
看《背包九讲》的过程中开了一个专题,大概26道题目,主要是Hdu和Poj的题目,题目有难有易,这次的专辑主要讲解这些题目,还有一些Uva的简单背包问题也会加入到这个专辑中。本专辑都只列举基本思路,如果大家想看详细思路或者代码请去我博客中查找,大部分题目我都有写解题报告。
一、01背包问题 (先枚举物品,再逆序枚举容量)
移方程:dp[j|k] = min(dp[j|k],dp[k]+1) (k为state[i,1<=j<=(1<<n)-1])
二、完全背包问题(先枚举物品,再正序枚举容量)
三、多重背包问题(先枚举物品,再正序枚举容量)
四、分组背包问题(先逆序枚举容量,再枚举物品)
五、树形背包问题(在树上进行分组背包处理)
1、Poj 1155 TELE 把每个节点的子节点看成一组背包,最大容量是这点的叶子子孙数量,选几个节点就是选择的容量,价值就是用户给的Money-中转费用。解题报告
Here
这篇文章将会不断更新,以后没遇到这五类背包,我都会整理进这个专题,希望大家保持关注。
本文ZeroClock原创,但可以转载,因为我们是兄弟。
分享到:
相关推荐
在整个算法竞赛中都比较重要的acm算法之DP 背包问题的汇总;背包九讲
dp acm 背包 dp 背包讲解 动态规划优化 斜率优化
用LINGO求解动态规划问题。可用于求解简单的背包问题。
这个是自己用matlab编写的简单的背包问题源程序
动态规划实现0/1背包
acm algorithm dp 背包9讲 acm algorithm dp 背包9讲acm algorithm dp 背包9讲acm algorithm dp 背包9讲acm algorithm dp 背包9讲
动态规划(DP)——背包问题算法详解[背包九讲]
DP_问题 添加者 - Manish Kumar 编号 问题 关联 相关概念 日期 代码 1 买苹果 无界背包 6/4/20 2 动物 0-1 背包 6/4/20 3 凯撒军团 DP 6/4/20 3a DP writeup + Caeser Legion 解决方案 DP 8/4/20 4 数字DP博客 数字...
DP算法篇之初学背包问题 DP算法篇之初学背包问题 DP算法篇之初学背包问题
内含57份dp 背包的专项练习题目,是一个大牛整理的,对于学习信息学的oier是十分的经典。 全部有测试数据和标程。
背包DP与树形DP从零起步,形象讲解让你更了解DP
动态规划(DP)——背包九讲
0-1背包问题,部分背包问题。分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法。附件中包含所有算法源代码.c文件,修改下文件名直接编译执行即可
关于dp(动态规划)中的背包问题的讨论,还有很多总结,这上面是用思路引导我们去慢慢理解背包问题的
背包九讲·经典DP~一个牛人发的背包九讲。。。从那里转过来的
文件包括以下子文件,每个文件里面包括了一定数量的ppt,doc,c++模板代码,希望对算法的入门的学习者有用。(注:其中多数文件是download它人的,本人只是将其整理) ...16-DP_01背包 16-DP_树状dp 16-贪心 17-数论
【专辑】插头DP 【专辑】单调队列+斜率优化的DP 01背包问题 acm动态规划总结 PKU——DP专辑 背包之01 POJ 动态规划总结 背包之01背包、完全背包、多重背包详解 Dynamic+Programming 典型的动态规划,用递归下的记忆...
学过算法的应该都知道动态规划里有个特例 就是背包算法 这里的文档能提供你几乎常见于不常见的应用背包的例子 很详细哦
动态规划概念 最长上升子序列 最长公共子序列 矩阵连乘问题 背包问题 树形DP 状态压缩DP
ACM入门算法之dp,背包,高级数据结构,搜索,图,最短路。