摘要: 分组背包 对物品进行分组,组内物品最多选一个或全不选; 其实质是变化的01背包:从对每个物品的01变成对每组物品的01,(可以看作一个物品有多个价值,一个代表一组) 解法 对数据分组,重新构建,变成01背包的模式 三层循环,先对组循环,中间是背包容量,最后是组内物品 例题 https://www.l 阅读全文
posted @ 2024-06-30 09:40 uanQ 阅读(265) 评论(0) 推荐(0)
摘要: 二维费用背包 在简单背包的1个费用下增加到2个费用 做法也从一维dp变成二维dp(给另一个的费用),进行三层循环; 例题 https://www.luogu.com.cn/problem/P1855 题目描述 输入格式 第一行三个整数 \(n,M,T\),表示一共有 \(n\)(\(1 \le n 阅读全文
posted @ 2024-06-30 09:11 uanQ 阅读(26) 评论(0) 推荐(0)
摘要: 顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解 特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.com.cn/ 阅读全文
posted @ 2024-06-29 23:39 uanQ 阅读(107) 评论(0) 推荐(0)
摘要: 多重背包也是 0-1 背包的一个变式。与 0-1 背包的区别在于每种物品有 k 个,而非一个。 朴素 直接把相同的每个物品视作各个单独的物品,没有关联,仅条件相同; 转换后直接用01背包的状态转移方程 注意:在大数据下容易爆空间时间 二进制分组优化 与朴素相比,优化利用二进制原理(任意数可以由多个不 阅读全文
posted @ 2024-06-29 22:52 uanQ 阅读(68) 评论(0) 推荐(0)
摘要: 完全背包模型与 0-1 背包类似,与 0-1 背包的区别仅在于一个物品可以选取无限次,而非仅能选取一次。 而状态转移方程于01背包区别在于可以直接从[i][j-w[i]]转移 理由是当我们这样转移时,[i][j-w[i]]已经由 [i][j-2*w[i]]更新过,那么 [i][j-w[i]]就是充分 阅读全文
posted @ 2024-06-29 21:52 uanQ 阅读(69) 评论(0) 推荐(0)
摘要: 01背包是背包dp的基础的重点,重点的基础!!! 题意概要:有 n 个物品和一个容量为 W 的背包,每个物品有重量 w_{i} 和价值 v_{i} 两种属性,要求选若干物品放入背包使背包中物品的总价值最大且背包中物品的总重量不超过背包的容量。 在上述例题中,由于每个物体只有两种可能的状态(取与不取) 阅读全文
posted @ 2024-06-27 17:40 uanQ 阅读(45) 评论(0) 推荐(0)
摘要: 1.调用的变量没有参数,为空 vscode出现Segmentation fault异常,但是没有问题报错(如上) 先说原因:cout << dp[m]; m没有输入,一个空定义(空指针) 难受啊,有一次cf因为这个bug卡了一晚上,掉大分! 2.一些递归函数没有返回值:return 导致函数死循环调 阅读全文
posted @ 2024-06-27 17:26 uanQ 阅读(166) 评论(0) 推荐(0)
摘要: 【模板】最长公共子序列 题目描述 给出 \(1,2,\ldots,n\) 的两个排列 \(P_1\) 和 \(P_2\) ,求它们的最长公共子序列。 输入格式 第一行是一个数 \(n\)。 接下来两行,每行为 \(n\) 个数,为自然数 \(1,2,\ldots,n\) 的一个排列。 输出格式 一个 阅读全文
posted @ 2024-06-26 14:04 uanQ 阅读(59) 评论(0) 推荐(0)