【总结】背包问题的至多/恰好/至少

原贴

一、学习过程总结

一开始学背包问题时遇到的大多数的状态表示是:从前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(只会求价值的最小值) 示例

Markmap
Markmap
posted @   糖豆爸爸  阅读(653)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-01-26 用SQL语句查询zabbix的监控数据
2018-01-26 Python 读写xlsx
Live2D
点击右上角即可分享
微信分享提示