AT_joi2021ho_e.ダンジョン 3 (Dungeon 3)
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在一个 N+1 层的地下城中,有 M 名玩家。地下城的层数从入口开始依次编号为第 1 层到第 N+1 层。玩家编号从 1 到 M。
要从地下城的某层移动到下一层,需要消耗一定的体力。玩家从第 i 层(1≤i≤N)移动到第 i+1 层时,会消耗 Ai 的体力。此外,地下城是单向通行的,只能从第 i 层向第 i+1 层移动。
从第 1 层到第 N 层的每一层都有一座恢复之泉。在第 i 层(1≤i≤N)的恢复之泉中,玩家可以花费 Bi 枚金币来恢复 1 点体力。只要金币足够,恢复之泉可以反复使用。但玩家的体力有上限,即使使用恢复之泉,体力也不会超过这个上限。
每位玩家 j(1≤j≤M)目前位于第 Sj 层,当前体力为 0,体力上限为 Uj。玩家 j 想要在不让体力变为负值的情况下到达第 Tj 层。为此,他需要多少枚金币?
根据提供的地下城和每个玩家的信息,请编写一个程序,判断每个玩家是否可以在体力不为负的情况下到达目标层,并在可能的情况下计算所需的最小金币数。
输入格式
输入数据从标准输入中给出,格式如下。所有输入的值均为整数。
N M A1 ⋯ AN B1 ⋯ BN S1 T1 U1 ⋮ SM TM UM
输出格式
输出为 M 行。每一行内容为:对于玩家 j,输出他到达第 Tj 层所需的最少金币数。如果某玩家无法到达第 Tj 层,则输出 -1。
输入输出样例
输入#1
5 4 3 4 1 1 4 2 5 1 2 1 1 6 3 1 6 4 3 5 1 2 5 9
输出#1
-1 29 3 22
输入#2
10 10 1 8 9 8 1 5 7 10 6 6 10 10 2 8 10 3 9 8 3 7 2 11 28 5 11 28 7 11 28 1 11 18 3 11 18 8 11 18 4 11 11 6 11 11 10 11 11 9 11 5
输出#2
208 112 179 248 158 116 234 162 42 -1
输入#3
20 20 2 3 2 11 4 6 9 15 17 14 8 17 3 12 20 4 19 8 4 5 19 3 18 2 13 7 5 19 10 1 12 8 1 15 20 1 13 2 18 6 12 15 67 7 15 18 16 17 14 9 21 97 1 19 43 3 18 31 16 20 70 7 20 28 1 16 61 3 5 69 9 10 15 2 13 134 11 19 23 16 20 14 5 21 16 15 20 11 7 11 54 7 16 16 13 17 10 3 15 135
输出#3
151 591 4 284 339 517 35 581 254 58 -1 178 519 -1 -1 -1 219 -1 -1 214
说明/提示
约束条件
- 1≤N≤200000
- 1≤M≤200000
- 1≤Ai≤200000
- 1≤Bi≤200000
- 1≤Sj<Tj≤N+1
- 1≤Uj≤100000000
子任务
- (11 分)N≤3000,M≤3000
- (14 分)U1=U2=⋯=UM
- (31 分)Tj=N+1
- (44 分)没有额外的约束。
示例解释 1
对于玩家 1,由于体力上限为 3,他无法从第 2 层移动到第 3 层,故输出 -1。对于玩家 2,其体力上限为 4,他可以通过以下步骤到达第 6 层:
- 在第 1 层用 8 枚金币将体力恢复到 4,然后移动到第 2 层,此时体力为 1。
- 在第 2 层用 15 枚金币将体力恢复到 4,然后移动到第 3 层,此时体力为 0。
- 在第 3 层用 4 枚金币将体力恢复到 4,然后移动到第 4 层,此时体力为 3。
- 在第 4 层无需使用金币,移动到第 5 层,此时体力为 2。
- 在第 5 层用 2 枚金币将体力恢复到 4,然后移动到第 6 层,此时体力为 0。
共花费 29 枚金币,用更少的金币无法到达第 6 层,因此第二行输出为 29。
示例解释 2
此输入示例满足子任务 3 的约束条件。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?