QOJ.ac

QOJ

时间限制: 1 s 内存限制: 1024 MB 总分: 100

#14084. 速通

统计

马里奥最近发现物理引擎进行了一次更新:现在当他处于小马里奥(Small Mario)形态时,他可以跑得更快。这给速通玩家们带来了不小的困扰。

为了简化问题,我们将关卡视为一个 $1 \times N$ 的网格。马里奥从第 $1$ 个网格出发,当他到达第 $N$ 个网格时即通关。

每个网格上可能有一个问号方块(用 ? 表示)、一个电锯(用 S 表示),或者什么都没有(用 . 表示)。保证第一个网格和第 $N$ 个网格都是空的。

马里奥可以处于以下三种形态之一:小马里奥(Small Mario)、超级马里奥(Super Mario)或火焰马里奥(Fire Mario)。向前移动一个网格,小马里奥需要消耗 $1$ 个游戏刻,而超级马里奥和火焰马里奥则需要消耗 $2$ 个游戏刻。马里奥只有在移动结束时才被视为到达了某个网格,且马里奥无法向后移动(如果向后移动就称不上是速通了)。

当马里奥到达一个有电锯的网格时,他会触发电锯并受到伤害(电锯是无法避开的)。这会导致以下行为:

  • 如果马里奥处于小马里奥形态,他会死亡。
  • 如果马里奥处于超级马里奥形态,他会变成小马里奥。
  • 如果马里奥处于火焰马里奥形态,他会变成超级马里奥。

当马里奥到达一个有问号方块的网格时,他可以选择是否触发它。如果选择触发,会导致以下行为:

  • 如果马里奥处于小马里奥形态,他会变成超级马里奥。
  • 如果马里奥处于超级马里奥形态,他会变成火焰马里奥。
  • 如果马里奥处于火焰马里奥形态,什么都不会发生。

与电锯和问号方块的交互均消耗 $0$ 个游戏刻。也就是说,当马里奥到达并触发它们时,马里奥会瞬间改变形态并更新他的速度。马里奥不可能触发同一个电锯两次,也不可能触发同一个问号方块两次。

速通玩家现在面临着一个艰难的选择:如何极限优化并决定是否触发每个问号方块。更复杂的是,玩家被允许在关卡开始时选择 $3$ 种马里奥形态中的任意一种。处于小马里奥形态可以让跑得更快,但如果在到达终点前死亡,跑得再快也无济于事。

在最优策略下,是否可能通关?如果可以,成功通关所需的最少游戏刻是多少?

输入格式

第一行输入一个整数 $2 \le N \le 200\,000$。

第二行输入一个长度为 $N$ 的字符串,仅由字符 .?S 组成。保证第一个和最后一个字符为 .

输出格式

输出一个整数,表示成功通关所需的最少游戏刻。如果无法通关,则输出 $-1$。

样例

输入样例 1

4
.S..

输出样例 1

4

说明

样例 1 说明:马里奥在第 1 个网格开始时应选择超级马里奥形态。在此形态下,移动一次需要 $2$ 个游戏刻。因此,马里奥在 $2$ 个游戏刻后到达第 2 个网格。电锯瞬间触发,马里奥变成小马里奥。现在他移动一次只需要 $1$ 个游戏刻。他再花 $1$ 个游戏刻到达第 3 个网格,然后再花 $1$ 个游戏刻到达第 4 个(即最后一个)网格。因此,他总共需要 $2 + 1 + 1 = 4$ 个游戏刻。

输入样例 2

6
.?.?S.

输出样例 2

6

输入样例 3

7
.SS?SS.

输出样例 3

-1

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.