CF1430E String Reversal

题目描述

给定一个字符串 $s$。你需要将其反转——即原本的第一个字母变为反转后的最后一个字母,原本的第二个字母变为反转后的倒数第二个字母,依此类推。例如,如果你的目标是反转字符串 "abddea",你应该得到字符串 "aeddba"。为实现目标,你可以交换字符串中相邻的元素。 你的任务是计算将给定字符串反转所需的最少相邻元素交换次数。

输入格式

第一行包含一个整数 $n$($2 \le n \le 200\,000$),表示字符串 $s$ 的长度。 第二行包含字符串 $s$,由 $n$ 个小写拉丁字母组成。

输出格式

输出一个整数,表示将字符串反转所需的最少相邻元素交换次数。

说明/提示

在第一个样例中,你需要先交换第三个和第四个元素,使字符串变为 "aazaa"。然后再交换第二个和第三个元素,使字符串变为 "azaaa"。因此,可以通过两次交换将字符串反转。 由于第二个样例中的字符串本身就是回文串,所以无需进行任何操作即可完成反转。 由 ChatGPT 4.1 翻译