#JC1062. 动态规划-背包进阶
动态规划-背包进阶
一、单项选择题(每题2分,共20分)
1、多重背包和01、完全背包的核心区别是?() {{ select(1) }}
- 多重背包物品不能分割
- 每种物品拥有有限的指定件数
- 多重背包追求价值最小化
- 多重背包没有背包容量限制
2、多重背包第一种朴素思路:暴力拆分转为01背包,主要缺点是?() {{ select(2) }}
- 代码逻辑极度复杂
- 无法使用一维dp数组
- 物品数量大时内存容易超限
- 必须正序遍历容量
3、多重背包三层循环朴素写法,新增一层循环变量k的含义是?() {{ select(3) }}
- 背包剩余总容量
- 当前选取该物品的件数
- 物品总种类
- dp数组下标
4、多重背包三层循环一维写法,容量j的遍历方向为?() {{ select(4) }}
- 从w[i]正序到m
- 从m倒序到w[i]
- 从1正序到m
- 随机顺序
5、多重背包二进制拆分,对于数量s,循环中j的变化方式是?() {{ select(5) }}
- j++
- j*=2
- j‑‑
- j /=2
6、某物品数量为12,二进制拆分之后,下面哪一组是正确的打包结果?() {{ select(6) }}
- 1,2,4,5
- 1,2,3,6
- 2,4,6
- 1,3,4,4
7、多重背包经过二进制打包之后,后续需要使用哪一个背包模板?() {{ select(7) }}
- 完全背包一维正序模板
- 多重背包三层循环模板
- 01背包一维倒序模板
- 最大子段和模板
8、宝岛题目内存限制严格(1MB),优先选用哪种多重背包解法?() {{ select(8) }}
- 暴力全部拆分成单件01背包
- 三层k循环朴素DP
- 二进制优化打包
- 完全背包模板
9、宝物筛选题目时间限制严格,为降低循环次数优先选择?() {{ select(9) }}
- 二进制优化打包 + 01背包
- 暴力拆分全部物品
- 三层循环朴素写法
- 直接当作完全背包处理
10、买表题目属于可行性多重背包,dp数组存储的信息是?() {{ select(10) }}
- 凑出该金额的最大价值
- 是否可以恰好凑出该金额
- 每种钱币剩余张数
- 手表的价格
二、判断题(每题2分,共10分)
11、二进制拆分的时候,拆分循环结束后,如果还存在剩余s,这部分不需要处理,可以直接丢弃。() {{ select(11) }}
- 正确
- 错误
12、多重背包二进制打包完成后,如果写成容量正序遍历,会产生逻辑错误。() {{ select(12) }}
- 正确
- 错误
13、三层循环朴素多重背包优点是内存占用较小,缺点是数据量大时容易超时。() {{ select(13) }}
- 正确
- 错误
14、暴力拆分转01背包,适合∑s特别大、内存限制极严格的场景。() {{ select(14) }}
- 正确
- 错误
15、买表可行性背包,目标不是求最大价值,而是判断金额能否被恰好凑出来。() {{ select(15) }}
- 正确
- 错误