#6985. 预算查询(budget)
预算查询(budget)
预算查询(budget)
题目描述
某公司准备从一批项目中选择若干个进行投资。
公司记录了连续 (m) 天的基础投入成本,第 (i) 天的成本为 。
共有 (n) 个候选项目。
第 (i) 个项目由三个整数 描述。
项目的投入成本为对应日期区间内每天成本之和,完成后可以获得 的收益。
每个项目最多只能选择一次。
不同项目相互独立,即使对应日期存在重叠,也可以同时选择,但费用分别计算。
现在公司需要回答 (Q) 次独立的预算查询。
每次查询给出一个预算 (B),要求计算在总投入成本不超过 (B) 的情况下,可以获得的最大总收益。
每次查询均从全部候选项目中重新选择,不受其他查询结果影响。
输入格式
第一行包含四个整数:
m n V Q
其中 (V) 表示所有查询可能出现的最大预算。
第二行包含 (m) 个正整数 。
接下来 (n) 行,每行三个整数 。
最后 (Q) 行,每行包含一个整数 (B),表示一次预算查询。
输出格式
输出 (Q) 行,每行一个整数,表示对应预算下的最大收益。
输入输出样例 #1
输入
6 4 11 5
2 1 2 3 1 2
1 2 5
3 4 9
5 6 6
2 5 11
2
3
6
8
11
输出
0
6
11
15
20
样例解释
四个项目的实际成本分别为 3、5、3、7。
例如:
- 预算为 2 时,没有项目可以选择,最大收益为 0。
- 预算为 6 时,可以选择第 1、3 个项目,获得收益 11。
- 预算为 11 时,可以选择第 1、2、3 个项目,总成本为 11,总收益为 20。
数据范围
- -
| 测试点编号 | 层级 | m |
n |
V |
Q |
询问与特殊性质 | 对应输出 |
|---|---|---|---|---|---|---|---|
| 1 | 弱数据 | 1 | 5 | 1 | 单项目、询问最大预算 | 10 |
|
| 2 | 边界数据 | 3 | 3 | 3 | 前缀和超过 int,项目全部超预算;询问 0、1、5 |
0, 0, 0 |
|
| 3 | 基础数据 | 2 | 6 | 5 | 询问费用临界值前后 | 0, 0, 10, 10, 18 |
|
| 4 | 正常数据 | 5 | 4 | 10 | 4 | 包含 L=1、单日、跨日和超预算区间 |
4, 8, 12, 14 |
| 5 | 2 | 20 | 四个项目区间相同,预算逐步增加 | 40, 70, 90, 100 |
|||
| 6 | 边界数据 | 4 | 5 | 5 | 两个零费用项目,包含 B=0 |
12, 12, 22, 22, 32 |
|
| 7 | 正常数据 | 3 | 10 | 询问乱序且 B=10 重复出现 |
23, 12, 23, 12, 23 |
||
| 8 | 较强数据 | 10 | 4 | 不同预算下最优组合发生变化 | 25, 26, 30, 51, 55 |
||
| 9 | 极限价值 | 4 | 2000 | 单项收益 2×10⁹,询问临界预算 |
0, 0, 2000000000, 4000000000, 8000000000 |
||
| 10 | 极限规模 | 100000 | 100 | 100 | 100 个费用 20、收益 10⁹ 的项目 |
B=20i 时为 i×10⁹;B=2000 时为 100000000000 |
|
相关
在以下作业中: