博客
关于我
Milking Time
阅读量:206 次
发布时间:2019-02-28

本文共 1526 字,大约阅读时间需要 5 分钟。

为了解决这个问题,我们需要安排Bessie的工作时间,使得她能够在有限的N小时内最大化产奶量。每次完成一个任务后,Bessie需要休息R小时。我们需要选择这些任务的顺序,以便在总产奶量上取得最大收益。

方法思路

  • 问题分析

    • Bessie每完成一个任务需要休息R小时,因此每个任务实际上占用的时间是结束时间减去开始时间再加上R小时。
    • 我们需要找到一种任务顺序,使得在这N小时内的总产奶量最大化。
  • 预处理

    • 将每个任务的结束时间加上R小时,记录到数组中。
    • 按照任务的结束时间排序这些任务。
  • 动态规划

    • 使用数组f,其中f[i]表示前i小时的最大产奶量。
    • 对于每个小时i,初始情况下,f[i]等于f[i-1](没有选择任何任务)。
    • 检查是否有任务的结束时间等于i,如果有,则计算选择该任务的产奶量,并更新f[i]。
  • 状态转移

    • 对于每个小时i,检查所有结束时间等于i的任务,计算选择这些任务的最大产奶量,更新f[i]。
  • 解决代码

    def main():    import sys    input = sys.stdin.read    data = input().split()        idx = 0    N = int(data[idx])    idx += 1    M = int(data[idx])    idx += 1    R = int(data[idx])    idx += 1    a = []    for _ in range(M):        l = int(data[idx])        idx += 1        r = int(data[idx])        idx += 1        c = int(data[idx])        idx += 1        a.append((l, r, c))        for i in range(M):        a[i] = (a[i][0], a[i][1] + R, a[i][2])        a.sort(key=lambda x: x[1])        f = [0] * (N + R + 2)        for i in range(1, N + R + 2):        f[i] = f[i - 1]        while idx < M and a[idx][1] < i:            idx += 1        while idx < M and a[idx][1] == i:            l, r, c = a[idx]            if l <= i - 1:                if f[l] + c > f[i]:                    f[i] = f[l] + c            idx += 1        print(f[N])if __name__ == "__main__":    main()

    代码解释

  • 读取输入

    • 读取输入数据,解析出N、M、R以及每个任务的开始时间、结束时间和效率。
  • 预处理任务

    • 将每个任务的结束时间加上R小时,记录到数组中。
    • 按照任务的结束时间排序这些任务。
  • 动态规划数组初始化

    • 初始化f数组,f[i]表示前i小时的最大产奶量。
  • 计算最大产奶量

    • 对于每个小时i,初始情况下,f[i]等于f[i-1]。
    • 检查是否有任务的结束时间等于i,如果有,计算选择该任务的产奶量,并更新f[i]。
  • 通过这种方法,我们可以高效地找到在给定N小时内的最大产奶量。

    转载地址:http://mptn.baihongyu.com/

    你可能感兴趣的文章
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>
    NLP的不同研究领域和最新发展的概述
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    nmap 使用方法详细介绍
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    nmap指纹识别要点以及又快又准之方法
    查看>>
    Nmap渗透测试指南之指纹识别与探测、伺机而动
    查看>>
    Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
    查看>>
    NMAP网络扫描工具的安装与使用
    查看>>
    NMF(非负矩阵分解)
    查看>>
    nmon_x86_64_centos7工具如何使用
    查看>>
    NN&DL4.1 Deep L-layer neural network简介
    查看>>
    NN&DL4.3 Getting your matrix dimensions right
    查看>>