#6981. 订单清单(orders)

订单清单(orders)

订单清单(orders)

题目描述

某加工厂需要安排一批生产订单。

工厂共有 (m) 天的基础加工费用,第 (i) 天的费用为 (ai)(a_i)。

现在有 (n) 笔订单,每笔订单由三个整数(Li,Ri,vi) (L_i,R_i,v_i) 描述。

其中:

  • (Li)表示订单对应的起始日期;(L_i) 表示订单对应的起始日期;
  • (Ri)表示订单对应的结束日期;(R_i) 表示订单对应的结束日期;
  • (vi)表示完成这笔订单可以获得的收益(v_i) 表示完成这笔订单可以获得的收益。

接受一笔订单,需要支付从第 (L_i) 天到第 (R_i) 天的所有基础加工费用之和。

每笔订单最多只能接受一次。

工厂的总预算为 (V),要求所有被接受订单的总加工费用不超过 (V)。

不同订单之间相互独立,即使对应的日期区间存在重叠,也可以同时接受,但每笔订单的加工费用必须分别计算。

请计算工厂能够获得的最大总收益。

输入格式

第一行包含三个整数 (m,n,V),分别表示天数、订单数量和总预算。

第二行包含 (m) 个正整数 (a1,a2,…,am)(a_1,a_2,\ldots,a_m),表示每天的加工费用。

接下来 (n) 行,每行三个整数 (Li,Ri,vi)(L_i,R_i,v_i)。

输出格式

输出一个整数,表示最大总收益。

输入输出样例 #1

输入

6 4 10
2 1 3 2 4 1
1 2 4
3 4 8
5 6 7
2 5 14

输出

15

样例解释

四笔订单的加工费用分别为:

订单 日期区间 加工费用 收益
1 1,21,2 3 4
2 3,43,4 5 8
3 5,65,6 7
4 2,52,5 10 14

选择第 2、3 笔订单,总费用为 (5+5=10),总收益为 (8+7=15)。

数据范围

  • (1≤m≤105)(1\le m\le10^5)
  • (1≤n≤100)(1\le n\le100)
  • (1≤V≤2000)(1\le V\le2000)
  • (1≤ai≤1000)(1\le a_i\le1000)
  • (1≤Li≤Ri≤m)(1\le L_i\le R_i\le m)
  • (1≤vi≤10000)(1\le v_i\le10000)

测试点编号 层级 m n V 数据特征 标准输出 设计目的
1 弱数据 1 5 单日订单恰好用完预算 10 检查最小规模和基础转移
2 3 所有订单费用均超过预算 0 检查超预算订单直接跳过
3 基础数据 5 4 10 包含 L=1、单日和跨日区间 14 检查前缀和边界及区间费用计算
4 正常数据 4 8 多个订单区间互相重叠 25 检查重叠区间仍作为独立订单选择
5 2 10 四笔订单的区间完全相同 70 检查不同订单可分别选择,但每笔最多一次
6 边界数据 4 5 包含两笔费用为 0 的订单 32 检查零费用订单及倒序 0/1 转移
7 正常数据 3 10 最优方案使用 8 单位预算 23 检查预算不要求恰好用完
8 较强数据 10 4 区间长度直接形成不同费用 55 卡按单笔收益直接贪心
9 极限价值 6 5 2000 单笔收益为 2×10⁹,含超预算长区间 8000000000 检查前缀和、超预算跳过及 long long
10 极限规模 100000 100 每日费用均为 1,100 笔费用为 20 的订单 100000000000 检查最大天数、最大预算和大价值累加