AT_joi2021_yo2_a.往復すごろく (Round Sugoroku)

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

JOI 高中的葵购买了一款新的双六棋盘。这款双六棋盘由 N+2N+2 个格子横向排列而成。这些格子从左到右依次编号为 00 到 N+1N+1。初始时,格子 00 和格子 N+1N+1 上写有 X,格子 ii(1≤i≤N1 \leq i \leq N)上写有 SiS_i。其中,SiS_i 是字符 . 或 #。

葵用这款双六棋盘和一个棋子进行游戏。最开始,棋子被放置在格子 AA(1≤A≤N1 \leq A \leq N)上,面朝右方。此时,SAS_A 一定是 .。每经过 11 秒,棋子会按当前朝向移动到相邻的一个格子。

该双六棋盘有如下规则:

  • 当棋子停在写有 X 的格子上时,棋子的朝向会反转。
  • 当棋子停在写有 . 的格子上时,什么都不会发生。
  • 当棋子停在写有 # 的格子上时,棋子的朝向会反转,并且该格子上的字符会被改为 .。因此,之后棋子再停在这个格子上时,朝向不会再反转。

此外,棋子的反转和字符的更改所需时间可以忽略不计。

给定双六棋盘和棋子的初始状态,请编写程序计算所有写有 # 的格子都被消除所需的时间。

输入格式

输入从标准输入按以下格式给出:

NN AA SS

其中,SS 是一个长度为 NN 的字符串,第 ii 个字符(1≤i≤N1 \leq i \leq N)为 SiS_i。

输出格式

请输出使所有写有 # 的格子都被消除所需的秒数。

输入输出样例

  • 输入#1

    7 3
    .#.#..#

    输出#1

    8
  • 输入#2

    4 1
    .#.#

    输出#2

    7
  • 输入#3

    6 6
    #####.

    输出#3

    35

说明/提示

限制条件

  • 2≤N≤200 0002 \leq N \leq 200\,000。
  • 1≤A≤N1 \leq A \leq N。
  • SiS_i 是字符 . 或 #(1≤i≤N1 \leq i \leq N)。
  • SAS_A 是字符 .。
  • 至少存在一个 ii(1≤i≤N1 \leq i \leq N),使得 SiS_i 是 #。

子任务

1.(40 分)N≤3 000N \leq 3\,000。
2.(60 分)无额外限制。

样例解释 1

随着时间的推移,双六棋盘的状态如下所示。右向棋子用 > 表示,左向棋子用 < 表示。

  1. X.#>#..#X
  2. X.#.<..#X
  3. X.#<...#X
  4. X.>....#X
  5. X..>...#X
  6. X...>..#X
  7. X....>.#X
  8. X.....>#X
  9. X......

样例解释 2

随着时间的推移,双六棋盘的状态如下所示。

  1. X>#.#X
  2. X.<.#X
  3. X<..#X
  4. >...#X
  5. X>..#X
  6. X.>.#X
  7. X..>#X
  8. X...

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页