zoukankan      html  css  js  c++  java
  • 背包考前小结

    背包问题

    1、01背包:

    一个物品取或不取,外层枚举第几个,内层枚举体积

    注意降成一维时枚举体积要倒序。

    2、完全背包

    每种物品无限个。同上,只不过逆序改顺序(因为无限,则也要考虑当前层对答案的影响)

    3、多重背包

    可以看成01背包,只不过一种物品有多个,还是逆序循环体积,只不过多了层枚举个数。

    可以二进制分解优化,从而转化为01背包。

    4、混合以上三种背包

    则多几个if语句,判断是哪种类型,分类讨论,代码同上

    5、二维费用背包

    只不过多了个状态而已,其他与上面一样。

    有时候条件按隐含的方式给出:最多只能取M件物品,则可将每一件物品多加一维花费为1

    6、分组背包

    每组只能选一个,则可以看成01背包,要么这组选,要么不选。

    循环还是逆序,只不过多了层组的循环,注意:逆序的V循环要在组的外面

    7、有依赖性的背包

    如果附件后无附件,只有一层主附关系,则可以对每个主件的附件分别进行01背包,最后再一起做01背包。

    8、泛化物品

    待填坑。。。

    9、总结

    灵活多变,多思考,多找性质,举一反三。

    还有会求方案数的,可以多开一个数组记录一下。

  • 相关阅读:
    Maven的生命周期
    Maven坐标
    IDEA配置maven
    IDEA配置tomcat
    重写父类方法
    类的继承
    内部类
    static关键字
    线程相关知识
    数组
  • 原文地址:https://www.cnblogs.com/Frank-King/p/9932111.html
Copyright © 2011-2022 走看看