AT_past202306_j.忍者

通过率:0%

AC君温馨提醒

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

题目描述

一名忍者将依次与 NN 个怪物逐一战斗。第 ii 个怪物的攻击力为 aia_i,生命值为 bib_i。当怪物的生命值降至 00 或以下时,会立刻被击败。
每个怪物要么在地面上,要么在空中。如果 xi=0x_i=0,则第 ii 个怪物在地面上;如果 xi=1x_i=1,则在空中。

忍者一开始有 MM 个手里剑。每个手里剑只能使用一次,通过投掷使用。
忍者与第 ii 个怪物的战斗过程如下:

  • 首先,忍者可以选择用手里的若干枚手里剑投掷怪物(可为零)。每投掷一枚,怪物的生命值减少 11。若对空中的怪物投掷至少一枚手里剑,则该怪物会落到地上。
  • 然后,忍者与怪物轮流攻击对方。每次忍者攻击都会使怪物的生命值减少 11;每次怪物攻击都会使忍者的生命值减少 aia_i。这里,如果怪物在地面上,则忍者先攻击,否则怪物先攻击。

请你求出,击败所有怪物后,忍者初始生命值与剩余生命值之间的最小可能差值。
已知忍者的生命值足够大。

输入格式

输入由标准输入给出,格式如下:

NN MM
a1a_1 b1b_1 x1x_1
a2a_2 b2b_2 x2x_2
⋮\vdots
aNa_N bNb_N xNx_N

输出格式

输出答案。

输入输出样例

  • 输入#1

    2 1
    2 2 1
    5 2 0

    输出#1

    4
  • 输入#2

    1 2
    1 4 1

    输出#2

    1
  • 输入#3

    4 3
    5 4 1
    6 2 0
    4 5 1
    3 2 0

    输出#3

    25

说明/提示

样例解释 1

若忍者如下操作,总共生命值减少了 44,且这是最优的:

  • 第一个怪物,不投掷手里剑。
    • 由于怪物在空中,怪物先攻击,忍者生命减 22。
    • 忍者攻击,怪物生命变为 11。
    • 怪物攻击,忍者生命再减 22。
    • 忍者攻击,怪物生命变为 00,战斗结束。
  • 第二个怪物,投掷一枚手里剑,怪物生命变为 11。
    • 由于怪物在地面,忍者先攻击,怪物生命变 00,战斗结束。

样例解释 2

若忍者如下操作,总共生命值减少了 11,且这是最优的:

  • 第一个怪物,投掷两枚手里剑,怪物生命变为 22,并落地。
    • 由于怪物在地面,忍者先攻击,怪物剩 11。
    • 怪物攻击,忍者生命减 11。
    • 忍者攻击,怪物生命变为 00,战斗结束。

数据范围

  • 1≤N≤3×1051 \leq N \leq 3 \times 10^5
  • 0≤M≤10110 \leq M \leq 10^{11}
  • 1≤ai,bi≤3×1051 \leq a_i, b_i \leq 3 \times 10^5
  • xi=0x_i = 0 或 xi=1x_i = 1
  • 所有输入均为整数。

由 ChatGPT 5 翻译

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

首页