QOJ.ac

QOJ

Limite de temps : 12 s Limite de mémoire : 1024 MB Points totaux : 100

#4429. Gebyte 的磨练

Statistiques

每年春天,猎魔人 Gebyte 都会踏上他的旅程,计划在磨练猎魔技艺的同时赚取一些钱财。小径从西向东延伸,全长 $n$ 英里;每一英里都有三种物体之一在等待着他:

  • $B\ b_i$:凶猛野兽的巢穴,在当地农民中令人闻风丧胆。当 Gebyte 踏入巢穴时,里面的野兽会立即攻击他,使猎魔人受伤。如果 Gebyte 在第一次攻击中幸存下来,他会迅速拔出银剑并杀死野兽。结果,Gebyte 的生命值变化如下: 如果 $H \leqslant b_i$,则 $death$,否则 $H := H - b_i$。

  • $K\ k_i$:当地的一家旅店,Gebyte(以贪杯闻名)一定会去光顾。如果他待在旅店时生命值低于 $k_i$,由于多喝了一桶酒,他会在黎明前死去。否则,带着严重的宿醉,生命值降至 $k_i$,他继续他的旅程。Gebyte 的生命值变化如下: 如果 $H < k_i$,则 $death$,否则 $H := k_i$。

  • $C\ c_i$:一位强大女巫的住所,她的魔法和药水可以治愈伤口并消除宿醉。如果 Gebyte 在生命值低于 $c_i$ 时遇见女巫,通过女巫的咒语和药剂,他的生命值会提升至 $c_i$。Gebyte 的生命值变化如下: $H := \max(H, c_i)$。

现在,猎魔人想知道他应该游历小径的哪一部分,这样他既能享受乐趣又能保住性命。日子一天天过去,第 $i$ 天会发生两件事之一:

  • 小径上的某个物体发生了变化,例如女巫的房子被当地商人买下并改成了旅店,或者一只新野兽从地下爬出,烧毁了一家旅店并在原址建了一个巢穴;
  • Gebyte 走出家门,坐在树下思考:如果他从第 $l_i$ 个物体开始他的旅程,并向东行进,他能在不丧命的情况下走多远?这些问题超出了普通猎魔人的能力范围,因此他请求你——一位以神秘编程魔法闻名的术士——来回答它们。

请注意,猎魔人只是在思考该怎么做,而并没有真正踏上旅程,因此虽然对小径的改变是永久的,但 Gebyte 的每一个问题都是独立的,且在每次询问中他的初始生命值都等于 $H$。

输入格式

第一行包含测试用例的数量 $z$ ($1 \leqslant z \leqslant 100\,000$)。接下来是各测试用例的描述。 每个测试用例的第一行包含三个整数 $n, q$ 和 $H$ ($1 \leqslant n \leqslant 2\,000\,000, 1 \leqslant q \leqslant 4\,000\,000, 1 \leqslant H \leqslant 10^{12}$) —— 小径长度、天数和 Gebyte 的初始生命值。 接下来的 $n$ 行描述了小径的初始状态;第 $i$ 行包含一个字母,表示第 $i$ 个物体的类型($B, K$ 或 $C$),以及一个整数($b_i, k_i$ 或 $c_i$;$1 \leqslant b_i, k_i, c_i \leqslant 10^{12}$),含义如前所述。 接下来的 $q$ 行描述了随后的日子。第 $i$ 行以字母 $Z$ 开头(如果第 $i$ 天小径发生了变化),或者以 $D$ 开头(如果 Gebyte 想象了另一段旅程)。 如果是小径变化,该行的其余部分包含:一个整数 $x_i$ ($1 \leqslant x_i \leqslant n$),表示发生变化的物体索引,后跟一个字母和一个整数,格式与初始状态描述相同,表示新物体。如果是 Gebyte 想象的旅程,该行包含一个整数 $l_i$ ($1 \leqslant l_i \leqslant n$),表示旅程应开始的物体索引。 所有小径的总长度不超过 $2\,000\,000$,总天数不超过 $4\,000\,000$。

输出格式

对于每个测试用例,按输入顺序输出 Gebyte 所有问题的答案。对于每个问题,输出一个整数,表示 Gebyte 可以到达(并幸存)的最远物体索引 $r_i$ ($l_i \leqslant r_i \leqslant n$),如果他会在第 $l_i$ 个物体处被杀死,则输出 $-1$。第 $i$ 天提出的问题的答案应考虑之前所有对小径的更改。

样例

样例输入 1

1
4 12 10
C 10
B 5
K 5
B 6
Z 3 K 6
Z 1 C 11
D 2
D 1
Z 3 C 1
D 3
Z 3 B 20
D 3
Z 1 C 31
D 1
Z 4 K 6
D 1

样例输出 1

2
3
4
-1
3
4

说明

小径发生了六次变化,方式如下: $[C\ 10, B\ 5, K\ 5, B\ 6]$(初始状态) $[C\ 10, B\ 5, K\ 6, B\ 6]$(第 1 天) $[C\ 11, B\ 5, K\ 6, B\ 6]$(第 2 天) $[C\ 11, B\ 5, C\ 1, B\ 6]$(第 5 天) $[C\ 11, B\ 5, B\ 20, B\ 6]$(第 7 天) $[C\ 31, B\ 5, B\ 20, B\ 6]$(第 9 天) * $[C\ 31, B\ 5, B\ 20, K\ 6]$(第 11 天)

在剩下的六天里,Gebyte 想象了各种旅程。 在第三天,Gebyte 从第二个物体开始。在杀死野兽后,他剩下 5 点生命值——不足以在下一个物体(旅店 $K\ 6$)中幸存。因此,Gebyte 能到达的最远物体是第二个。 在第四天,Gebyte 从第一个物体开始;多亏了女巫,他获得了额外的 1 点生命值,并幸存于第三个物体(旅店),但在最后一个物体(野兽)处失败了。 在第六天,Gebyte 从第三个物体开始,现在是女巫 $C\ 1$。在生命值不变的情况下,他继续前进并杀死了野兽,这是小径上的最后一个物体。 在第八天,Gebyte 从野兽 $B\ 20$ 开始,他无法击败它,所以答案是 $-1$。 在第十天,Gebyte 从强大的 $C\ 31$ 开始,多亏了它,他击败了前两只野兽,在最后一个物体处失败。 在最后一天,Gebyte 成功走完了整条小径。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.