P13971 [VKOSHP 2024] Exploration Robots
题目描述
用于测试机器人的场地由 $n$ 个格子组成,这些格子从左到右依次编号为 $1$ 到 $n$。每个格子中包含一个英文字母,从第一个格子到第 $n$ 个格子依次读出这些字母可以得到字符串 $s$。
有两个机器人可以在场地上移动,具体规则如下:
- 机器人知道字符串 $s$;
- 机器人可以自由交换信息;
- 机器人始终知道它们之间的距离,以及哪一个在左、哪一个在右;
- 每个机器人可以读取正下方格子的字母;
每一步,机器人可以在与另一个机器人交换信息后,移动到相邻的左侧或右侧格子。如果机器人试图移动到第一个格子左侧或第 $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$)。
输出格式
对于每次实验,输出机器人能够访问的不同格子的最大数量。
说明/提示
考虑示例中的最后一次实验。两个机器人从同一个位置出发,看到的字母是 $\texttt{a}$。它们明白向左移动是危险的,因为可能导致机器人被销毁。然而,向右移动是安全的,因为字符串的最后一个字母是 $\texttt{b}$。一个或两个机器人向右移动,直到到达字母 $\texttt{b}$。到达 $\texttt{b}$ 时,机器人知道之前的字符串是 $\texttt{aab}$,这可能是字符串的开头或结尾;它们无法越界,否则会被销毁,因此它们总共访问了 $3$ 个格子。
由 ChatGPT 4.1 翻译