AT_joi2021ho_e.ダンジョン 3 (Dungeon 3)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在一个 N+1N+1 层的地下城中,有 MM 名玩家。地下城的层数从入口开始依次编号为第 11 层到第 N+1N+1 层。玩家编号从 11 到 MM。

要从地下城的某层移动到下一层,需要消耗一定的体力。玩家从第 ii 层(1≤i≤N1 \leq i \leq N)移动到第 i+1i+1 层时,会消耗 AiA_i 的体力。此外,地下城是单向通行的,只能从第 ii 层向第 i+1i+1 层移动。

从第 11 层到第 NN 层的每一层都有一座恢复之泉。在第 ii 层(1≤i≤N1 \leq i \leq N)的恢复之泉中,玩家可以花费 BiB_i 枚金币来恢复 11 点体力。只要金币足够,恢复之泉可以反复使用。但玩家的体力有上限,即使使用恢复之泉,体力也不会超过这个上限。

每位玩家 jj(1≤j≤M1 \leq j \leq M)目前位于第 SjS_j 层,当前体力为 00,体力上限为 UjU_j。玩家 jj 想要在不让体力变为负值的情况下到达第 TjT_j 层。为此,他需要多少枚金币?

根据提供的地下城和每个玩家的信息,请编写一个程序,判断每个玩家是否可以在体力不为负的情况下到达目标层,并在可能的情况下计算所需的最小金币数。

输入格式

输入数据从标准输入中给出,格式如下。所有输入的值均为整数。

NN MM A1A_1 ⋯\cdots ANA_N B1B_1 ⋯\cdots BNB_N S1S_1 T1T_1 U1U_1 ⋮\vdots SMS_M TMT_M UMU_M

输出格式

输出为 MM 行。每一行内容为:对于玩家 jj,输出他到达第 TjT_j 层所需的最少金币数。如果某玩家无法到达第 TjT_j 层,则输出 -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≤200 0001 \leq N \leq 200\,000
  • 1≤M≤200 0001 \leq M \leq 200\,000
  • 1≤Ai≤200 0001 \leq A_i \leq 200\,000
  • 1≤Bi≤200 0001 \leq B_i \leq 200\,000
  • 1≤Sj<Tj≤N+11 \leq S_j < T_j \leq N+1
  • 1≤Uj≤100 000 0001 \leq U_j \leq 100\,000\,000

子任务

  1. (11 分)N≤3 000N \leq 3\,000,M≤3 000M \leq 3\,000
  2. (14 分)U1=U2=⋯=UMU_1 = U_2 = \cdots = U_M
  3. (31 分)Tj=N+1T_j = N+1
  4. (44 分)没有额外的约束。

示例解释 1

对于玩家 11,由于体力上限为 33,他无法从第 22 层移动到第 33 层,故输出 -1。对于玩家 22,其体力上限为 44,他可以通过以下步骤到达第 66 层:

  • 在第 11 层用 88 枚金币将体力恢复到 44,然后移动到第 22 层,此时体力为 11。
  • 在第 22 层用 1515 枚金币将体力恢复到 44,然后移动到第 33 层,此时体力为 00。
  • 在第 33 层用 44 枚金币将体力恢复到 44,然后移动到第 44 层,此时体力为 33。
  • 在第 44 层无需使用金币,移动到第 55 层,此时体力为 22。
  • 在第 55 层用 22 枚金币将体力恢复到 44,然后移动到第 66 层,此时体力为 00。

共花费 2929 枚金币,用更少的金币无法到达第 66 层,因此第二行输出为 29。

示例解释 2

此输入示例满足子任务 3 的约束条件。

本翻译由 AI 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页