Files
python/TangDou/AcWing/BeiBao/【总结】背包问题的至多_恰好_至少-主帖.md
HuangHai 1f397eca87 'commit'
2025-08-30 18:35:01 +08:00

3.4 KiB
Raw Blame History

原贴

一、学习过程总结

一开始学背包问题时遇到的大多数的状态表示是:从前$i$个物品中选,且总体积至多是$j$的问题。

慢慢地在提高课中,就有出现状态表示是:从前$i$个物品中选,且总体积恰好是$j$的问题。例如 AcWing 1023. 买书 ,求的是恰好是$j$的总方案数问题。

同时还出现了状态表示是:从前$i$个物品中选,且总体积至少是$j$的问题。例如 AcWing 1020. 潜水员 ,求的是总体积至少是$j$的最小价值。

二、求方案数初始化总结

二维情况

  1. 体积至多$j$ 【$01$+完全】 f[0][i] = 1, $0 <= i <= m$,其余是0 示例

    初始化解释: 用前$0$种物品,在小于$i$的空间内,方案数是1,表示由于啥也不能选择,所以不管是哪个空间,都只能有一种方案,就是啥也不选。

  2. 体积恰好$j$ 【$01$+完全】 f[i][0] = 1, 其余是0 示例

    初始化解释: 在前$i$种物品中选择,恰好空间为$0$的方案数,只能是啥也不选。


  1. 体积至少$j$ 【只$01$背包】 f[0][0] = 1, 其余是0 示例

    初始化解释: 在前$0$种物品中选择,空间至少为$0$的方案数,只能是啥也不选

一维情况

  1. 体积至多j, f[i] =1, 0 <= i <= m 示例
  2. 体积恰好j, f[0] =1, 其余是0 示例
  3. 体积至少j, f[0] =1, 其余是0 示例

三、求最大值最小值初始化总结

二维情况

  1. 体积至多$j$ 【$01$+完全】 $f[i,j] = 0$,$0 <= i <= n, 0 <= j <= m$( 只会求价值的最大值)示例

  2. 体积恰好$j$: 当求价值的最小值:f[0][0] = 0, 其余是INF 示例 当求价值的最大值:f[0][0] = 0, 其余是-INF 示例

  3. 体积至少$j$,$f[0][0] = 0$,其余是$INF$(只会求价值的最小值) 示例

一维情况

  1. 体积至多$j$,$f[i] = 0, 0 <= i <= m$( 只会求价值的最大值) 示例
  2. 体积恰好j: 【$01$+完全】
  • 当求价值的最小值:f[0] = 0, 其余是INF 示例
  • 当求价值的最大值:f[0] = 0, 其余是-INF 示例
  1. 体积至少$j$,$f[0] = 0$,其余是$INF$(只会求价值的最小值) 示例