#P11989. [JOIST 2025] 勇者比太郎 3 / Bitaro the Brave 3

[JOIST 2025] 勇者比太郎 3 / Bitaro the Brave 3

题目背景

本题测试点极大,评测时可能需要等待较长时间加载测试点。

题目描述

比太郎在打防御战。防御战的难度用一个 [1,L]\in [1,L] 的整数表示,这个值可以在任务开始时选择。在难度为 \ell1L1 \leq \ell \leq L)的防御战中,怪物的生命值会是难度 11 时的 \ell 倍。

防御战持续 T T 秒,期间会有 N N 只怪物出现。每只怪物被分配一个从 1 1 N N 的唯一编号。时间 tt0tT0 \leq t \leq T)指战斗开始后 tt 秒的时刻。

怪物 ii1iN1 \leq i \leq N)会在时间 SiS_i0Si<T0 \leq S_i < T)出现,强度PiP_i,且在难度 \ell 下的生命值×Hi\ell \times H_i

在防御战中,比太郎可以无限次执行以下动作:

  • 选择当前在场的一只怪物并攻击它,这需要 1 1 秒的时间。怪物的生命值会减少 1 1 。一旦怪物的生命值降为 0 0 ,它将被视为被击败并不再被攻击。

当时间到达 T T 时,防御战结束,并按以下规则计算惩罚分:

  • hih_i 为时间 T T 后怪物 ii1iN1 \leq i \leq N)的剩余生命值。惩罚分为 h1P1+h2P2++hNPNh_1 P_1 + h_2 P_2 + \cdots + h_N P_N

如果惩罚分小于等于任务指定的阈值 m m ,则比太郎成功完成任务。由于更高难度会带来更好的奖励,比太郎希望确定他能完成任务的最髙难度等级。但阈值 m m 是未知的,因此比太郎决定针对 Q Q 个候选阈值 M1,M2,,MQM_1, M_2, \ldots, M_Q,分别找出能完成任务的最髙难度等级。

给定防御战的信息和候选阈值,请编写一个程序:对于每个阈值,判断任务是否可完成,并在可能的情况下找出可完成的最髙难度等级。

输入格式

NN LL TT
S1S_1 H1H_1 P1P_1
S2S_2 H2H_2 P2P_2
\vdots
SNS_N HNH_N PNP_N
QQ
M1M_1
M2M_2
\vdots
MQM_Q

输出格式

输出 QQ 行。在第 jj 行(1jQ1 \leq j \leq Q),输出当 m=Mjm = M_j 时能完成任务的最髙难度等级。如果在任何难度下都无法完成任务,则输出 00

2 2 10
0 9 2
8 5 1
3
0
20
40
0
1
2
3 1 100000000000
60000000000 30000000000 1
30000000000 45000000000 1
10000000000 10000000000 1
1
0
0
3 10000000 100000000
60000000 4 1
30000000 6 1
0 2 1
1
0
7000000
5 20 100
0 3 1
20 2 2
40 1 3
60 4 4
80 2 5
11
0
50
100
150
200
250
300
350
400
450
500
6
8
10
12
13
15
16
18
19
20
20

提示

子任务

样例解释 11

在难度为 11 的防守战中,可以采取以下行动来达到 44 的惩罚分。无法达到 33 或更低的惩罚分。

时间 事件
00 怪物 11(生命值 99)出现。
080 \sim 8 攻击怪物 1188 次。怪物 11 的生命值从 9 9 降至 11
88 怪物 22(生命值 55)出现。
898 \sim 9 攻击怪物 22 11 次。怪物 22 的生命值从 5 5 降至 44
9109 \sim 10 攻击怪物 11 11 次。怪物 11 的生命值从 1 1 降至 00
1010 怪物 11 被击败。
防守战结束。惩罚分为 0×P1+4×P2=40 \times P_1 + 4 \times P_2 = 4

此外,在难度为 22 的防守战中,可以采取以下行动来达到 2626 的惩罚分。无法达到 2525 或更低的惩罚分。

时间 事件
00 怪物 11(生命值 1818)出现。
080 \sim 8 攻击怪物 1188 次。怪物 11 的生命值从 1818 降至 1010
88 怪物 22(生命值 1010)出现。
8108 \sim 10 攻击怪物 1122 次。怪物 11 的生命值从 1010 降至 88
1010 防守战结束。惩罚分为 8×P1+10×P2=268 \times P_1 + 10 \times P_2 = 26

此外,在此输入示例中,由于 L=2L = 2,无法选择难度 33 或更高的防御战。因此输出如下:

  • 对于第一个阈值 M1=0M_1 = 0,无法在任何难度下完成任务,故第一行输出 00
  • 对于第二个阈值 M2=20M_2 = 20,最多能在难度 11 下完成任务,故第二行输出 11
  • 对于第三个阈值 M3=40M_3 = 40,最多能在难度 22 下完成任务,故第三行输出 22

该样例满足子任务 383\sim 8 的限制。

样例解释 22

该样例满足所有子任务的限制。

样例解释 33

该样例满足子任务 282\sim 8 的限制。

样例解释 44

该样例满足子任务 585\sim 8 的限制。

数据范围

  • 1N60001 \leq N \leq 6\,000
  • 1L100000001 \leq L \leq 10\,000\,000
  • 1T10181 \leq T \leq 10^{18}
  • 0Si<T0 \leq S_i < T1iN1 \leq i \leq N);
  • 1Hi1 \leq H_i1iN1 \leq i \leq N);
  • 1Pi1 \leq P_i1iN1 \leq i \leq N);
  • H1P1+H2P2++HNPN1011H_1 P_1 + H_2 P_2 + \cdots + H_N P_N \leq 10^{11}
  • 1Q10000001 \leq Q \leq 1\,000\,000
  • 0Mj10180 \leq M_j \leq 10^{18}1jQ1 \leq j \leq Q);
  • M1<M2<<MQM_1 < M_2 < \cdots < M_Q
  • 输入的所有值均为整数。

子任务

  • Subtask 1 (1 pts)\text{Subtask 1 (1 pts)}N30N \leq 30Q=1Q = 1M1=0M_1 = 0L=1L = 1
  • Subtask 2 (3 pts)\text{Subtask 2 (3 pts)}N30N \leq 30Q=1Q = 1M1=0M_1 = 0
  • Subtask 3 (10 pts)\text{Subtask 3 (10 pts)}N30N \leq 30Q3Q \leq 3
  • Subtask 4 (10 pts)\text{Subtask 4 (10 pts)}Q3Q \leq 3
  • Subtask 5 (35 pts)\text{Subtask 5 (35 pts)}N30N \leq 30
  • Subtask 6 (8 pts)\text{Subtask 6 (8 pts)}N400N \leq 400
  • Subtask 7 (20 pts)\text{Subtask 7 (20 pts)}N1800N \leq 1\,800
  • Subtask 8 (13 pts)\text{Subtask 8 (13 pts)}:无额外限制。