QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 2048 MB Total points: 100

#14329. Tower of Hanoi

الإحصائيات

去年在河内参加 ICPC 亚太锦标赛时,你了解到了著名的汉诺塔问题。在该问题中,有三根杆子和若干个半径各不相同的圆盘,圆盘可以滑入任何一根杆子。杆子编号为 1 到 3。在任何时刻,每个圆盘都必须堆叠在其中一根杆子上,且每根杆子上的圆盘必须按半径从上到下递增的顺序排列。在一步操作中,你可以将一根杆子顶部的圆盘移动到另一根杆子的顶部,前提是该移动不违反上述限制。目标是以最少的步数将所有圆盘移动到杆子 1 上。

你现在正在解决这个著名问题的扩展版本。你有一个包含 $n$ 个整数的序列 $p_1, p_2, \dots, p_n$,其初始值已知。

你还需要处理 $q$ 个操作。每个操作属于以下两种类型之一:

修改操作:给定两个整数 $x$ 和 $y$。该操作要求你将 $p_x$ 的值修改为 $y$。

求解操作:给定两个整数 $l$ 和 $r$。该操作要求你解决一个汉诺塔问题,其中包含半径为 $l, l + 1, \dots, r$ 的 $r - l + 1$ 个圆盘,对于每个 $l \le i \le r$,半径为 $i$ 的圆盘初始堆叠在杆子 $p_i$ 上。每根杆子上初始堆叠的圆盘顺序满足前述限制。你需要求出将所有圆盘移动到杆子 1 所需的最少步数,结果对 998 244 353 取模。

你的任务是按顺序执行所有给定的操作。

输入格式

第一行包含两个整数 $n$ 和 $q$ ($1 \le n \le 100\,000$; $1 \le q \le 100\,000$)。第二行包含 $n$ 个整数,表示 $p_1, p_2, \dots, p_n$ 的初始值 ($1 \le p_i \le 3$)。接下来的 $q$ 行按执行顺序描述了各项操作。每行的格式如下:

  1. “c $x$ $y$” ($1 \le x \le n$; $1 \le y \le 3$),表示对指定的 $x$ 和 $y$ 执行修改操作。
  2. “s $l$ $r$” ($1 \le l \le r \le n$),表示对指定的 $l$ 和 $r$ 执行求解操作。

输入中至少包含一个求解操作。

输出格式

对于每个求解操作,按顺序输出将半径为 $l, l + 1, \dots, r$ 的圆盘移动到杆子 1 所需的最少步数,结果对 998 244 353 取模。

样例

输入 1

4 4
2 3 1 3
s 2 4
s 1 3
c 3 3
s 2 4

输出 1

6
2
7

说明

样例输入/输出 #1 的解释:

第一个操作要求解决半径为 2、3 和 4 的圆盘初始分别堆叠在杆子 3、1 和 3 上的汉诺塔问题。如图 D.1 所示,所有圆盘可以在 6 步内移动到杆子 1。

图 D.1:将所有圆盘移动到杆子 1 的 6 个步骤。阴影杆表示最后一步移动的杆子。

第二个操作要求解决半径为 1、2 和 3 的圆盘初始分别堆叠在杆子 2、3 和 1 上的汉诺塔问题。

第四个操作要求解决半径为 2、3 和 4 的圆盘初始分别堆叠在杆子 3、3 和 3 上的汉诺塔问题。

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.