CSDN同步 前置知识: 浅谈单调队列 简单背包问题 这篇文章我们主要研究 单调队列优化 \(\text{dp}\) 如何用于背包问题。 \(\text{01}\) 背包 \(n\) 个物品,背包体积为 \(V\),每个物品有 \(v_i\)(价值)和 \(w_i\)(重量),每个物品只有 $1$ ...
分类:
其他好文 时间:
2020-07-12 22:20:57
阅读次数:
60
初始化的细节问题 我们看到的求最优解的背包问题题目中,事实上有两种不太相同的问法。 有的题目要求“恰好装满背包”时的最优解,有的题目则并没有要求必须把背 包装满。一种区别这两种问法的实现方法是在初始化的时候有所不同。 如果是第一种问法,要求恰好装满背包,那么在初始化时除了F[0]为0,其 它F[1. ...
Acwing2 01背包问题 有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。 第 ii 件物品的体积是 vivi,价值是 wiwi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 输入格式 第一行两个整数,N,VN,V,用空格隔开,分别 ...
分类:
其他好文 时间:
2020-07-12 10:24:32
阅读次数:
49
背包问题: 问题描述有$n$件物品, 每件物品的体积为$V_i$,价值为$W_i$, 有一个体积为$V$的背包, 求总体积不大于$V$的所有物品总价值最大是多少 01背包问题: 每件物品只能用一次 状态表示: \(dp[i][j]\) 集合:所有选法 条件:仅从前$i$个物品中选择,而且使得总体积不 ...
分类:
其他好文 时间:
2020-07-11 14:28:28
阅读次数:
57
简单的多重背包( 思维题$\star\star\star $) Descrption 这是一个简单的多重背包问题。 有一个大小为 \(n\) 的包,你有 \(n\) 种物品,其中第 \(i\) 种物品的大小为 \(i\),数量为 \(i\) 个($1<=i<=n$),求装满这个背包的方案数是多少? ...
分类:
其他好文 时间:
2020-07-11 14:26:23
阅读次数:
43
背包问题具体例子:假设现有容量10kg的背包,另外有3个物品,分别为a1,a2,a3。物品a1重量为3kg,价值为4;物品a2重量为4kg,价值为5;物品a3重量为5kg,价值为6。将哪些物品放入背包可使得背包中的总价值最大? 首先想到的,一般是穷举法,一个一个地试,对于数目小的例子适用,如果容量增 ...
分类:
编程语言 时间:
2020-07-09 00:51:57
阅读次数:
66
动态规划类问题主要分为两大类: 1.求最优解(典型的背包问题) 2.计数(统计方案) 以上两类都存在递推性质。 第一类的递推称为最优子结构 -- 当前问题的最优解取决于子问题的最优解。 当前问题的方案数取决于子问题的方案数时,也可以用动态规划解决。 第二类例子: 机器人走方格(leetcode63. ...
分类:
其他好文 时间:
2020-07-06 09:13:38
阅读次数:
54
现在有个问题:已知N个箱子以及每个箱子重量,船只最大承载量是W,如何在T次运送之内运完箱子(不考虑空间因素,只要重量没超过都能放得下) 思路:要保证在T次之内送完箱子,换句话说就要要每次运送的货物的总重量达到或者最接近船只最大承载量(当然前提要保证最大承载量W大于(箱子总重量/T次)) 方法1:穷举 ...
分类:
其他好文 时间:
2020-07-04 19:13:14
阅读次数:
73
先来解释一下什么是线性dp 在求状态转移方程时,有明显的线性求取顺序 比如背包问题 这道题目我们先给数字编号 分析 dp问题的时间复杂度如何分析 一般是状态数量乘以转移的计算量(就是算每个状态需要的计算量) 本题大致就是500 * 500 1 #include <bits/stdc++.h> 2 u ...
分类:
其他好文 时间:
2020-07-03 10:31:36
阅读次数:
71
分组背包问题是物品有n组,每组里面有若干个物品,每组里最多选一个。 dp[i][j]只从前i组物品中选,且总体积不大于j的最大价值 状态计算:枚举第i组物品选哪个或不选 不选第i组物品,选第i组的第1个物品,选第i组的第2个物品,等等等等 二维做法 1 #include <bits/stdc++.h ...
分类:
其他好文 时间:
2020-07-02 18:12:21
阅读次数:
43