#CF2140A. 移位排序
移位排序
给定一个长度为 的二进制字符串 (仅由字符 和 组成)。
你可以进行任意次数操作(包括不操作): 选取三个下标满足 ,对 进行循环右移或循环左移。
举例说明: 二进制字符串 :
- 选取 做循环右移,字符串变为 ;
- 选取 做循环左移,字符串变为 。
求将给定二进制字符串排成非递减有序(所有在前、在后)所需的最少操作次数。
输入格式
多组测试数据。 第一行一个整数 (),表示测试用例组数。
每组测试用例: 第一行输入整数 (),代表字符串长度。 第二行输入长度为 的二进制字符串 。
输出格式
对每组测试用例,输出一个整数:将字符串排序所需的最少操作次数。
样例输入
4
3
001
4
0110
6
110100
6
101011
样例输出
0
1
2
1
样例说明
- 第一组:字符串已经有序,无需操作,答案为 。
- 第二组:选取 执行一次循环右移,即可变为有序串 ,答案为 。
补充术语注释
- binary string:二进制字符串,仅由 构成
- cyclically left shift:循环左移
- cyclically right shift:循环右移
- sorted binary string:有序二进制串,规范形态为所有排在前面,所有排在后面