zoukankan      html  css  js  c++  java
  • 费用提前计算

    这是一个经典思想。


    例1: CH5A01 任务安排1。 在 acwing 上的题号是 300。
    sumT、sumC 分别为 T、C 的前缀和, 设 F[i,j] 表示前 i 个任务分 j 批执行的最小费用。
    则转移方程为:

    [mit F[i,j] = minlimits_{0le k<i} lbrace F[k,j-1] + (sumC[i]-sumC[k]) * (j*S+sumT[i]) brace ]

    采用费用提前计算的话, 就是设 F[i] 表示前 i 个任务分了若干批执行的最小费用。
    则转移方程为:

    [mit F[i] = minlimits_{0le j<i} lbrace F[j] + (sumC[i]-sumC[j]) * sumT[i] + S*(sumC[n]-sumC[j]) brace ]

    看起来很科幻, 《进阶指南》给出的解释足够详细, 再此简述:
    考虑由 j 开头 i 结尾的一批启动, 这个 S 最终造成的贡献是固定的, 即 S * (sumC[N]-sumC[j]), 所以每次转移的时候把这次启动的贡献加上, 就可以不用记录批次了。
    还有一点要说明:这个题目使用费用提前计算并不会导致决策错误, 证明比较简单。


    例2: UVA1336 修缮长城。
    这道题比较简单就不说了。

  • 相关阅读:
    WebService相关
    远程连接db2数据库
    修改VNC分辨率大小
    java面向对象的核心思想
    小故障排查
    使用IntelliJ IDEA开发java web
    WebService概述
    Qt开发之信号槽机制
    用SoapUI 测试Web Service
    剑指offer:滑动窗口的最大值
  • 原文地址:https://www.cnblogs.com/tztqwq/p/13907990.html
Copyright © 2011-2022 走看看