P6709 [CCC 2020] Swapping Seats
题目描述
有 $N$ 个人坐在一张**圆**桌旁。
共有三个派别,每一个人属于一个派别。
现在,您想使属于同一派别的人坐到一起。
您可以每次将两个人交换位置,输出最小的交换次数。
输入格式
仅一行一个长度为 $N$ 的字符串 $s$,为顺时针所有人的派别。
如果 $s_i$ 为 `A`,则说明第 $i$ 个人为第一个派别的,以此类推。
输出格式
仅一行一个整数,表示最小的交换次数。
说明/提示
#### 样例解释
$\texttt{BABCBCACCA}\to\texttt{AABCBCBCCA}\to\texttt{AABBBCCCCA}$。
#### 子任务
**本题采用捆绑测试,且本题的 Subtask 分数有微调。**
- Subtask 1($26$ 分):$s_i\in\{$`A`$,$`B`$\}$ 且 $N\le 5\times 10^3$。
- Subtask 2($27$ 分):$s_i\in\{$`A`$,$`B`$\}$。
- Subtask 3($27$ 分):$N\le 5\times 10^3$。
- Subtask 4($20$ 分):无特殊限制。
对于 $100\%$ 的数据,保证 $s_i\in\{$`A`$,$`B`$,$`C`$\}$,$1\le N\le 10^6$。
#### 说明
本题译自 [Canadian Computing Competition](https://cemc.uwaterloo.ca/resources/past-contests?contest_category=29) [2020 Senior](https://cemc.uwaterloo.ca/sites/default/files/documents/2020/seniorEF.pdf) T4 Swapping Seats。