lqb#P26007. 智能产线排程优化

智能产线排程优化

题目描述

某智能制造工厂拥有两条完全相同且可以并行工作的自动化生产线,分别记为 A 和 B。现在,工厂同时接到了 NN 份生产订单。

对于第 ii 份订单(1iN1 \le i \le N),给定以下三个参数:

  • 加工时间 pip_i:该订单在任意一条生产线上加工所需的时间;
  • 交付期限 did_i:该订单必须在第 did_i 小时之前(含第 did_i 小时)完成;
  • 订单收益 rir_i:若该订单按时完成,工厂可以获得的收益。

两条生产线都从第 0 小时开始运行,并且彼此独立。对于任意一条生产线:

  • 同一时刻最多只能加工一份订单;
  • 每份订单一旦开始加工,就必须连续完成,不能中断;
  • 相邻订单之间没有切换时间。

工厂可以从这 NN 份订单中选择任意若干份进行生产。对于每一份被选择的订单,需要决定:

  • 将其分配给生产线 A 或生产线 B;
  • 它在对应生产线上的加工顺序。

要求所有被选择的订单都必须在各自的交付期限内完成。对此,请你计算:工厂最多能够获得多少收益。

输入格式

第一行包含一个正整数 NN,表示订单数量。

接下来 NN 行,每行包含三个正整数 pi,di,rip_i, d_i, r_i,分别表示第 ii 份订单的加工时间、交付期限和收益。

输出格式

输出一行,包含一个整数,表示能够获得的最大总收益。

4
3 4 10
3 5 12
2 3 6
4 7 15
43

解释 #1

四份订单的信息如下:

订单编号 11 22 33 44
加工时间 pip_i 33 22 44
交付期限 did_i 44 55 33 77
收益 rir_i 1010 1212 66 1515

一种最优安排如下:

  • 生产线 A:先加工订单 33,再加工订单 22
  • 生产线 B:先加工订单 11,再加工订单 44

具体完工情况为:

  • 生产线 A:

    • 订单 33 在第 020 \sim 2 小时加工,完工时刻为 22,满足 2d3=32 \le d_3 = 3
    • 订单 22 在第 252 \sim 5 小时加工,完工时刻为 55,满足 5d2=55 \le d_2 = 5
  • 生产线 B:

    • 订单 11 在第 030 \sim 3 小时加工,完工时刻为 33,满足 3d1=43 \le d_1 = 4
    • 订单 44 在第 373 \sim 7 小时加工,完工时刻为 77,满足 7d4=77 \le d_4 = 7

四份订单均可按时完成,总收益为:

6+12+10+15=436 + 12 + 10 + 15 = 43
5
3 4 10
2 3 7
4 6 20
3 7 12
5 8 18
60

解释 #2

五份订单的总加工时间为:

3+2+4+3+5=173 + 2 + 4 + 3 + 5 = 17

在最晚交付期限为 88 的情况下,两条生产线在时间区间 [0,8][0, 8] 内总共最多只能提供 1616 个单位的加工时间,因此不可能将全部订单都安排并按时完成。

一种最优方案是放弃订单 22,选择订单 {1,3,4,5}\{1, 3, 4, 5\}。安排如下:

  • 生产线 A:先加工订单 33,再加工订单 44
  • 生产线 B:先加工订单 11,再加工订单 55

对应的完工时刻分别为:

  • 订单 33:完工时刻为 44,满足 4d3=64 \le d_3 = 6
  • 订单 44:完工时刻为 77,满足 7d4=77 \le d_4 = 7
  • 订单 11:完工时刻为 33,满足 3d1=43 \le d_1 = 4
  • 订单 55:完工时刻为 88,满足 8d5=88 \le d_5 = 8

这四份订单均能按时完成,因此总收益为:

20+12+10+18=6020 + 12 + 10 + 18 = 60

可以证明,不存在收益大于 6060 的可行方案,因此答案为 6060

数据范围

  • 对于 30%30\% 的评测用例,满足 N15N \le 15
  • 对于 60%60\% 的评测用例,满足 N50N \le 50,且 di300d_i \le 300
  • 对于所有的评测用例,1N2001 \le N \le 2001pi501 \le p_i \le 50pidi1000p_i \le d_i \le 10001ri100001 \le r_i \le 10000