随笔分类 - 算法基础课
摘要:题目链接 题目描述 有 N 组物品和一个容量是 V 的背包。 每组物品有若干个,同一组内的物品最多只能选一个。 每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。 求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。 输出最大价值。 题目模型 集合表示:f(
阅读全文
摘要:题目链接 题目描述 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。 题目模型 每种物品可以打包成数量为1,2,4,...,c的物品 对于打包好的物品进
阅读全文
摘要:题目链接 题目描述 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。 题目模型 多重背包:每件物品最多选si件 集合表示:f(i,j) 集合含义:所有只
阅读全文
摘要:题目链接 题目描述 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。 第 i 种物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 题目模型 完全背包:每个物品可以选无穷件 集合表示:f(i,j) 集合含义:
阅读全文
摘要:题目链接 题目描述 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 题目模型 01背包:每个物品只能选或不选 集合表示:f(i,j) 集合含义:所
阅读全文
摘要:题目链接 题目描述 给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 题目模型 集合表示:f(i,j) 集合含义:所有在第一个序列的前i个字母中出现,且在第二个序列的前j个字母中出现的子序列 集合属性:max 集合划分: 题目代码
阅读全文
摘要:题目链接 题目描述 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 1≤N≤100000 题目模型 题目分析: 对于下图所示样例,当某一个数能放在3后面时,肯定能放在1后面。所以我们只需记录每一个长度下最后一个元素的最小值是多少就可以了。 用q[i]数组记录长度为i的上升子
阅读全文
摘要:题目链接 题目描述 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 题目模型 集合表示:f(i) 集合含义:所有以第i个数结尾的上升子序列 集合属性:max 集合划分: 以第i个元素的上个元素的下标作为划分依据: 题目代码 #include <iostream> #incl
阅读全文
摘要:题目链接 题目描述 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 题目模型 集合表示:f(i,j) 集合含义:所有从(1,1)走到(i,j)的路线 集合属性:max 集合划分: 题目
阅读全文