A. 机器人(robot)

    传统题 1000ms 256MiB

机器人(robot)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

小 T 正在参与“图灵信奥”的机器人挑战赛。他设计了一台自动扫地机器人,并将其放置在一个长度为 n+2n+2 的走廊上进行测试。走廊的格子从左到右依次编号为 00 到 n+1n+1。其中,格子 00 和格子 n+1n+1 是走廊两端的墙壁,标记为 X。中间的 nn 个格子(1≤i≤n1 \le i \le n)分别标记为字符 SiS_i。其中,SiS_i 为 . 表示干净的格子,为 # 表示有灰尘的格子。

初始时,机器人位于格子 AA(1≤A≤n1 \le A \le n),且朝向右方(即朝向编号增大的方向)。保证初始时格子 AA 是干净的(即 SAS_A 一定是 .)。机器人启动后,每过 11 秒钟,就会向其当前朝向的方向移动 11 格。

走廊和机器人的清扫设定如下:

  • 当机器人移动到标记为 X 的墙壁格子时,机器人的朝向会立刻反转。
  • 当机器人移动到标记为 . 的干净格子时,不会发生任何变化,继续前进。
  • 当机器人移动到标记为 # 的有灰尘格子时,机器人的朝向会立刻反转,同时将该格子的灰尘清扫干净(字符变为 .)。此后,即使机器人再次经过该格子,该格子也已被视作干净的格子,机器人的朝向不会再反转。

此外,机器人反转方向和清扫灰尘所耗费的时间可忽略不计。

现在给定走廊的初始状态和机器人的初始位置,请你编写程序,帮助小 T 计算:从机器人启动开始,直到走廊上所有标记为 # 的格子均被清扫干净(即所有的 # 均变为 .)所需的总秒数。

输入格式

从文件 robot.in 中读入数据。

输入的第一行包含两个正整数 nn 和 AA,分别表示中间走廊的长度和机器人的初始位置。

输入的第二行包含一个长度为 nn 的字符串 SS,其中第 ii 个字符表示第 ii 个格子初始时的状态 SiS_i。

输出格式

输出到文件 robot.out 中。

输出一行包含一个整数,表示直到所有有灰尘的格子均变为 . 所需的秒数。

7 3
.#.#..#
8

样例 1 解释

随着时间的推移,走廊与机器人的状态将发生如下变化。我们将朝右移动的机器人所在的格子用 > 表示,将朝左移动的机器人所在的格子用 < 表示:

 X.#>#..#X
 X.#.<..#X
 X.#<...#X
 X.>....#X
 X..>...#X
 X...>..#X
 X....>.#X
 X.....>#X
 X......<X

在第 8 秒后,所有的 # 都变成了 .,任务完成。

4 1
.#.#
7

样例 2 解释

状态变化如下:

 X>#.#X
 X.<.#X
 X<..#X
 >...#X
 X>..#X
 X.>.#X
 X..>#X
 X...<X
6 6
#####.
35

数据范围

对于所有测试数据,保证:2≤n≤2×1052 \le n \le 2\times 10^5,1≤A≤n1 \le A \le n,SA=.S_A = \texttt{.},且字符串 SS 中至少存在一个 #。

测试点 nn 特殊性质
1∼81\sim 8 ≤3000\le 3000 无特殊性质
9∼209\sim 20 ≤2×105\le 2\times 10^5

模拟赛

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-10-27 14:00
结束于
2026-10-27 16:10
持续时间
2.2 小时
主持人
参赛人数
9