#6974. 订单交付(delivery)

订单交付(delivery)

订单交付(delivery)

题目描述

一家工厂需要安排生产订单。

共有 (n) 笔订单,第 (i) 笔订单有三个属性:

  • 加工时间(ti) (t_i);
  • 最晚完成时间 (di)(d_i);
  • 完成后获得的收益(vi)(v_i)。

工厂从时间 0 开始生产,同一时刻最多只能加工一笔订单。

每笔订单一旦开始加工,就必须连续完成,不允许中途暂停。

每笔订单最多完成一次,也可以放弃某些订单。

所有接受的订单都必须在各自的最晚完成时间之前或恰好在该时刻完成。

工厂总共最多可以工作 (T) 单位时间。

求能够获得的最大总收益。

输入格式

第一行包含两个整数 (n,T)。

接下来 (n) 行,每行包含三个整数:

t d v

输出格式

输出最大总收益。

输入输出样例 #1

输入

4 7
3 4 6
2 5 5
2 6 7
3 7 9

输出

21

样例解释

可以依次完成第 2、3、4 笔订单。

三个订单的完成时刻分别为 2、4、7,均满足各自的截止要求。

总收益为 (5+7+9=21)。

数据范围

  • (1≤n≤100)(1\le n\le100)
  • (1≤T≤2000)(1\le T\le2000)
  • (1≤ti≤T)(1\le t_i\le T)
  • (1≤di≤T)(1\le d_i\le T)
  • (1≤vi≤10000)(1\le v_i\le10000)

测试点编号 层级 n T 特殊性质 标准输出 设计目的
1 弱数据 1 单个订单,恰好在截止时间完成 7 检查最小规模与基础转移
2 4 5 所有订单均有 t > d,包含 t > T 0 检查无订单可选、答案保持为 0
3 基础数据 5 多个相同截止时间,存在组合取舍 24 检查 0/1 选择和组合最优
4 正常数据 6 10 输入截止时间乱序 59 检查是否先按截止时间排序
5 12 最优方案只使用 10 单位时间 137 检查答案不要求恰好用完 T
6 8 大量同截止时间、重复订单 47 检查倒序转移,防止同一订单重复选择
7 较强数据 7 10 价值、耗时与截止时间交叉 59 卡按价值、耗时或性价比直接贪心
8 10 20 多个截止时间边界与组合冲突 96 检查多阶段状态转移和边界可行性
9 极限数据 100 100 截止时间完全逆序,单项价值为 10⁹ 100000000000 检查最大 n、排序及 long long 累加
10 2000 全部截止时间相同,恰好占满总时间 5050 检查最大 T、同截止时间和容量边界