CF2149D.A and B
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的字符串 s,仅由字符 'a' 和 'b' 组成。
每次操作,你可以选择一个位置 i(1≤i≤n−1),交换相邻的字符 si 和 si+1。
你需要用最少的操作次数,使得同一种字符('a' 或 'b')全部连续地排列在一起,形成恰好一个连续的块。
另一种字符可以在这个块的前面或后面,形成最多两个(可能为空)的块。
以下是一些合法的最终形式示例:
- 'aaabbbaaa' —— 所有的 'b' 连续在一起(一个块),'a' 可以在这个块前后;
- 'bbbaaaaaabbb' —— 所有的 'a' 连续在一起,'b' 则在字符串边缘;
- 'aaaaabbbb' 或 'bbbbaaaaa' —— 两种字符分别各自形成一个连续块。
你需要计算,实现上述目标状态所需的最小操作次数。
输入格式
输入包含若干组测试数据。
第一行输入一个整数 t(1≤t≤104),表示测试用例的组数。
每组测试数据第一行输入一个整数 n(1≤n≤2×105),表示字符串 s 的长度。
第二行输入一个仅包含字符 'a' 和 'b',长度为 n 的字符串 s。
保证所有测试用例中 n 的总和不超过 2×105。
输出格式
对于每组测试数据,输出一行一个整数,表示使同一种字符形成一个连续块所需的最小操作次数。
输入输出样例
输入#1
5 4 abab 6 bababa 7 abababa 2 ab 1 b
输出#1
1 2 2 0 0
说明/提示
在第一个测试用例中,初始字符串为 'abab':
- 交换相邻的第 2 和 3 个字符后,得到字符串 'aabb';
- 或交换第 1 和 2 个字符后,得到字符串 'baab'。
两种情况下都只需操作一次,之后同一类字符已经连在一起,故最少操作次数为 1。
在第五个测试用例中,字符串仅包含一个字符 'b'。单个字符已经形成了连续块,不需要任何操作,输出 0。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?