QOJ.ac

QOJ

Límite de tiempo: 1.0 s Límite de memoria: 512 MB Puntuación total: 100 Hackeable ✓

#16858. 探索机器人

Estadísticas

测试机器人的场地由 $n$ 个格子组成,从左到右用整数 $1$ 到 $n$ 编号。每个格子包含一个英文字母;从第 $1$ 个格子到第 $n$ 个格子依次读取字母,形成字符串 $s$。

有两个机器人可以在场地上移动,满足以下条件:

  • 机器人知道字符串 $s$;
  • 机器人可以自由交换信息;
  • 机器人始终知道它们之间的距离,以及哪一个机器人在左边,哪一个在右边;
  • 两个机器人中的每一个都可以读取其正下方格子里的字母。

在一步中,机器人在与另一个机器人交换信息后,可以移动到左侧相邻的格子或右侧相邻的格子。如果机器人试图移动到第 $1$ 个格子的左侧或第 $n$ 个格子的右侧,它将被销毁。

科学家们想要进行 $q$ 次实验,在第 $i$ 次实验中,第一个机器人被放置在位置 $x_i$,第二个机器人被放置在位置 $y_i$。在每次实验中,机器人的目标是访问尽可能多的不同格子。对于每次实验,需要确定机器人在不冒被销毁风险的情况下,最多可以访问多少个不同的格子。

输入格式

第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 300\,000$)—— 格子数量和实验次数。

第二行包含一个长度为 $n$ 的字符串 $s$,由 $n$ 个小写英文(拉丁)字母组成。

接下来的 $q$ 行,每行包含两个整数 $x_i, y_i$($1 \le x_i, y_i \le n$)。

输出格式

对于每次实验,输出机器人在不冒被销毁风险的情况下最多可以访问的不同格子数量。

样例

输入样例 1

10 4
aabaabbaab
4 5
8 5
2 3
1 1

输出样例 1

3
10
3
3

说明

考虑样例中的最后一次实验。机器人从同一点出发,并看到字母 "a"。它们明白向左移动是危险的,因为这可能会导致机器人被销毁。然而,向右移动是安全的,因为字符串的最后一个字母是 "b"。一个或两个机器人向右移动,直到到达字母 "b"。到达字母 "b" 后,机器人知道它之前的字符串是 "aab",这可能是整个字符串的开头,也可能是结尾;在不冒被销毁风险的情况下,它们无法超出这个范围,因此它们总共成功访问了 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.