CF1246F Cursor Distance
题目描述
给定一个由小写英文字母组成的字符串 $s$。有一个光标位于某个字符上。你可以通过以下操作移动光标:选择一个字母 $c$ 和一个方向(左或右)。然后,光标会移动到所选方向上距离最近的字母 $c$ 处。如果该方向上没有字母 $c$,则光标保持不动。例如,若 $s = \mathtt{abaab}$,光标位于第二个字符($\mathtt{a[b]aab}$),则:
- 向左移动到最近的字母 $\mathtt{a}$,光标会移动到第一个字符($\mathtt{[a]baab}$);
- 向右移动到最近的字母 $\mathtt{a}$,光标会移动到第三个字符($\mathtt{ab[a]ab}$);
- 向右移动到最近的字母 $\mathtt{b}$,光标会移动到第五个字符($\mathtt{abaa[b]}$);
- 进行其他操作时,光标保持不动。
定义 $\mathrm{dist}(i, j)$ 为将光标从第 $i$ 个字符移动到第 $j$ 个字符所需的最少操作次数。请计算 $\displaystyle \sum_{i = 1}^n \sum_{j = 1}^n \mathrm{dist}(i, j)$。
输入格式
一行,一个非空字符串 $s$,长度不超过 $10^5$,仅包含小写英文字母。
输出格式
输出一个整数,表示 $\displaystyle \sum_{i = 1}^n \sum_{j = 1}^n \mathrm{dist}(i, j)$。
说明/提示
在第一个样例中,对于任意 $i = j$,有 $\mathrm{dist}(i, j) = 0$,对于其他所有 $i \neq j$ 的情况,$\mathrm{dist}(i, j) = 1$。
由 ChatGPT 4.1 翻译