#aBC217H. [ABC217H] Snuketoon

[ABC217H] Snuketoon

AT_abc217_h [ABC217H] Snuketoon

题目描述

AtCoder 公司开发的游戏《スヌケトゥーン》中,玩家需要操作すぬけ君躲避从水枪射来的水。

游戏的舞台是一条无限延伸的数轴,游戏开始时,すぬけ君位于 00 点。
游戏开始后,すぬけ君每经过 11 秒,可以选择以下三种操作之一:“向左移动 11 单位”、“向右移动 11 单位”或“不移动”。更严格地说,若すぬけ君在游戏开始后第 tt 秒(t0t \geq 0tt 为整数)时位于 pp 点,则在第 t+1t+1 秒时,可以选择移动到 p1p-1ppp+1p+1

如果すぬけ君被水枪射出的水击中,则会受到伤害。水枪会发射 NN 次,第 ii 次发射由 Ti,Di,XiT_i, D_i, X_i 给出,具体如下:

  • 从游戏开始后第 TiT_i 秒,水枪会从左右任意一侧发射水。假设すぬけ君在第 TiT_i 秒时位于 pp 点,则伤害的范围和数值如下:
    • Di=0D_i = 0 时,若 p<Xip < X_i,则会受到 XipX_i - p 的伤害。
    • Di=1D_i = 1 时,若 Xi<pX_i < p,则会受到 pXip - X_i 的伤害。

职业玩家高桥君为了发布攻略信息,决定让すぬけ君在所有 NN 次水枪发射结束后所受的总伤害最小。请输出高桥君操作すぬけ君,使其总伤害最小的情况下,最终的总伤害。

输入格式

输入按以下格式从标准输入读入。

NN T1T_1 D1D_1 X1X_1 T2T_2 D2D_2 X2X_2 \cdots TNT_N DND_N XNX_N

输出格式

请输出高桥君操作すぬけ君,使其总伤害最小的情况下,最终的总伤害。

输入输出样例 #1

输入 #1

3
1 0 3
3 1 0
4 0 6

输出 #1

7

输入输出样例 #2

输入 #2

3
1 0 1
6 1 1
8 0 -1

输出 #2

0

输入输出样例 #3

输入 #3

5
1 0 1000000000
2 1 -1000000000
3 0 1000000000
4 1 -1000000000
5 0 1000000000

输出 #3

4999999997

说明/提示

限制条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1T1<T2<<TN1091 \leq T_1 < T_2 < \dots < T_N \leq 10^9
  • DiD_i1iN1 \leq i \leq N)为 0011
  • 109Xi109-10^9 \leq X_i \leq 10^91iN1 \leq i \leq N
  • 所有输入均为整数。

样例解释 1

为方便说明,令 tt 表示从游戏开始经过的秒数。すぬけ君在所有水枪发射结束前的最优移动如下:

  • t=0t = 0 时,すぬけ君在 00 点,选择向右移动 11 单位。
  • t=1t = 1 时,すぬけ君在 11 点,受到第 11 次水枪发射造成的 22 点伤害。然后选择向左移动 11 单位。
  • t=2t = 2 时,すぬけ君在 00 点,选择不移动。
  • t=3t = 3 时,すぬけ君在 00 点,未受到第 22 次水枪发射的伤害。然后选择向右移动 11 单位。
  • t=4t = 4 时,すぬけ君在 11 点,受到第 33 次水枪发射造成的 55 点伤害。

此时,すぬけ君总共受到 77 点伤害,因此输出 77

由 ChatGPT 4.1 翻译