超市111

证明一下反悔贪心正确性

假设我们当前考虑的第 i i i个物品,前面 i − 1 i-1 i1个物品已经是满足题意的情况下尽量大的 t t t个物品了

注意由于这是反悔贪心,所以别从全局的决策包容性的角度考虑,因为之前做出的选择可能根本不是全局最优解;我们应该考虑这种决策之后,对于 i i i个物品来说,一定是尽量大的 t t t个物品

如果 i i i可以直接放入,没啥好说的肯定放入,是尽量大的 t t t个物品

如果 i i i不可以直接放入,那么就说明现在 t t t个物品已经把前 t t t天占满了。假设存在另一种包含 i i i的物品价值总和更大的方案 B B B B B B的物品总价值大于蓝书上说的用第 i i i个物品取代价值最小的物品的方案 A A A的物品总价值),那么这种方案中, i i i一定是放在第 t t t天的(注意按照天数从小到大排序了,所以也可以认为这个方案中过期天数越大的放在越后面),我们拿掉第 i i i个物品,然后将前 t − 1 t-1 t1个物品依次往后移动一天,直到某一个物品不能往后移动(不然就过期了),设这个物品是前 t − 1 t-1 t1个物品中的第 j j j个物品,那么考虑我们现在堆里面的 t t t个物品中(注意,这 t t t个物品是没有放入第 i i i个物品的时候的物品,也就是前面 i − 1 i-1 i1个物品满足题意的情况下利润尽量大的 t t t个物品)(注意虽然堆是按照价值排序的,但是下面的分析也是认为按照过期天数升序排序),我们先将堆中 [ j + 2 , t ] [j+2,t] [j+2,t]的物品和这个方案中 [ j + 2 , t ] [j+2,t] [j+2,t]的物品进行一一对应(一模一样的物体才可以对应),就像下面一样

注意由于方案中的物品按照了过期天数排序的,所以说方案中 [ 1 , j ] [1,j] [1,j]物品是不可能有任何一个为堆中 [ j + 1 , t ] [j+1,t] [j+1,t]物品;如果对应过程中,堆中物品 x x x有一个无法对应,那么把堆中的这个物品 x x x移到方案的空位上会得到一个更大的结果(这是因为堆中这个物品显然在方案中没有出现过;我们最开始有 A A A的总价值小于 B B B的总价值,也就是说 A A A去掉第 i i i个物品的总价值小于 B B B去掉第 i i i个物品的总价值,而 A A A去掉第 i i i个物品再添加上被第 i i i物品替代的那一个物品就变成了上面分析中所说的“堆”的物品,也即前面 i − 1 i-1 i1个物品满足题意的情况下利润尽量大的 t t t个物品, B B B去掉第 i i i个物品再加上 x x x的总价值却大于了前面 i − 1 i-1 i1个物品满足题意的情况下利润尽量大的 t t t个物品,这显然矛盾);否则都可以对应,那么在堆中的第 j + 1 j+1 j+1个物品直接放到空位上即可,仍然导出矛盾

相关推荐

  1. <span style='color:red;'>超市</span><span style='color:red;'>111</span>

    超市111

    2024-07-22 23:32:02      16 阅读
  2. BC115超级圣诞树

    2024-07-22 23:32:02       59 阅读
  3. Hive超市零售案例

    2024-07-22 23:32:02       34 阅读
  4. Python超市商品管理系统

    2024-07-22 23:32:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 23:32:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 23:32:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 23:32:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 23:32:02       55 阅读

热门阅读

  1. PHP 快速入门:构建动态网站的基础

    2024-07-22 23:32:02       14 阅读
  2. 2024年7月16日~2024年7月22日周报

    2024-07-22 23:32:02       18 阅读
  3. Python面试题-11

    2024-07-22 23:32:02       12 阅读
  4. Redis小结

    2024-07-22 23:32:02       18 阅读
  5. SpringBoot中如何使用RabbitMq

    2024-07-22 23:32:02       11 阅读
  6. 【Python】Pandas简要教程

    2024-07-22 23:32:02       16 阅读
  7. 0基础认识C语言(函数)

    2024-07-22 23:32:02       20 阅读
  8. Gradle构建加速:自定义缓存策略全解析

    2024-07-22 23:32:02       14 阅读
  9. 2024.7.22

    2024-07-22 23:32:02       12 阅读