CF1860E Fast Travel Text Editor

题目描述

给定一个由小写拉丁字母组成的字符串 $s$。 有一个光标,初始时位于字符串中两个相邻字母之间。光标不能放在第一个字母之前或最后一个字母之后。 每次操作,你可以执行以下三种操作之一: - 将光标向左移动一个位置(前提是不会移到第一个字母之前); - 将光标向右移动一个位置(前提是不会移到最后一个字母之后); - 设光标左侧的字母为 $x$,右侧的字母为 $y$。你可以选择字符串中任意一对相邻的字母,其中左侧为 $x$,右侧为 $y$,并将光标移动到这两个字母之间的位置。 你将会被询问 $m$ 次,每次询问给出两个整数 $f$ 和 $t$,分别表示光标的初始位置和目标位置。对于每个询问,请计算将光标从位置 $f$ 移动到位置 $t$ 所需的最少操作次数。

输入格式

第一行包含一个字符串 $s$($2 \le |s| \le 5 \times 10^4$),仅由小写拉丁字母组成。 第二行包含一个整数 $m$($1 \le m \le 5 \times 10^4$),表示询问的数量。 接下来的 $m$ 行,每行包含两个整数 $f$ 和 $t$($1 \le f, t \le |s| - 1$),表示第 $i$ 次询问中光标的初始位置和目标位置。位置 $x$ 表示光标位于字符串第 $x$ 个和第 $x+1$ 个字母之间(下标从 $1$ 开始)。

输出格式

对于每个询问,输出一行一个整数,表示将光标从位置 $f$ 移动到位置 $t$ 所需的最少操作次数。

说明/提示

由 ChatGPT 4.1 翻译