摘要:
例题的话,可以看一下洛谷1064 金明的预算方案 原题链接 https://www.luogu.org/problemnew/show/P1064 有依赖性的背包,顾名思义,及选中其中一个物品,另一个物品必须随之选择 题意: 有n个物品,预算为V元,w[i]为每个物品的价格,v[i]为每个物品的重要 阅读全文
摘要:
分组背包其实也不难,弄清楚前面的这里就十分好解决了 有容积为V的背包,有n件物品,每种物品属于的组别不同,t为最大的组数,每组中的物品相互冲突,所以只能选其中一件 接下来是每件物品的重量w[i],价值v[i],以及组号x,求最大的价值 因为每组物品只能选一件,我们很容易把这转化为01背包 显然dp方 阅读全文
摘要:
其实混合背包就更简单了 有n种物品,背包的容量为V,接下来给出每个物品的重量w[i],价值v[i],数量c[i],如果c[i]为0,表示这种物品有无数件,求最大的价值 显然dp方程分为两种 如果是完全背包则是 dp[j]=max(dp[j],dp[j-w[i]]+v[i]) (j=w[i];j<=V 阅读全文
摘要:
这里讲一讲多重背包问题 有n种物品,背包的容量为V,接下来给出每个物品的重量w[i],价值v[i],数量c[i],求最大的价值 有了01背包和完全背包的基础,这里就不难了 显然dp方程为 dp[j]=max(dp[j],dp[j-k*w[i]]+k*v[i]) (j-k*w[i]>=0 && 0<= 阅读全文
摘要:
我们来讲一讲完全背包 完全背包是有n种物品,每个物品有无限个,背包的重量为V,接下来每个背包重量为w[i],价值为v[i],求最大总价值。 其实这和01背包在代码上十分相似,思路也很类似 只是这里是有无限个物品 状态转移方程就很容易得出 dp[i][j]=max(dp[i-1][j],dp[i-1] 阅读全文
摘要:
01背包 有n种物品,背包重量为V,接下来有每个背包的重量w[i],价值v[i],求最大的总价值。 这是01背包的基本样式, 首先分析问题,有两种状态,放还是不放,显然得出了我们第一个dp方程 dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]) 表示前i个已经 阅读全文