You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
python/TangDou/AcWing/BeiBao/【总结】背包问题的至多_恰好_至少-主帖.md

3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

原贴

一、学习过程总结

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

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

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

二、求方案数初始化总结

二维情况

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

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

  2. 体积恰好j01+完全】 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. 体积至多j01+完全】 f[i,j] = 00 <= i <= n, 0 <= j <= m 只会求价值的最大值示例

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

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

一维情况

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