• 求助大佬6——1种贪心


    基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
     
    N个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为a[i]和b[i]。你可以安排每个作业的执行顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。求这个最少的时间。
     
    Input
    第1行:1个数N,表示作业的数量。(2 <= N <= 50000)
    第2 - N + 1行:每行两个数,中间用空格分隔,表示在M1和M2上加工所需的时间a[i], b[i]。(1 <= a[i], b[i] <= 10000)。
    Output
    输出完成所有作业所需的最少时间。
    Input示例
    4
    3 7
    2 1
    1 1
    4 2
    Output示例
    14

    (1) 把作业按工序加工时间分成两个子集,
    第一个集合中在S1上做的时间比在S2上少,
    其它的作业放到第二个集合.
    先完成第一个集合里面的作业, 再完成第二个集合里的作业.
    (2) 对于第一个集合, 其中的作业顺序是按在S1上的时间的不减排列;
    对于第二个集合, 其中的作业顺序是按在S2上的时间的不增排列.

    怎样理解这样贪心是正确的?

  • 相关阅读:
    c# 方法重载
    c# propertyGrid下拉选项
    c# 枚举类型
    c# socket编程
    读书笔记之ado.net entity framework
    c# delegate的invoke和bejinInvoke的区别
    C# 读书笔记之类与结构体
    c#笔记之启动新线程
    c# listview的使用
    visual studio2013 改变匹配括号的颜色
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6476191.html
Copyright © 2020-2023  润新知