#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) }}

  • 正确
  • 错误