求01反转次数
题目描述
Yuilice最近给学生们上了一节动态规划的课程,为了让各位同学了解到动态规划的核心内容是划分阶段与建立状态转移方程,于是他出了这一道题。
Yuilice会给各位同学一个字符串S,这个字符串S只会由字符0与字符1组成,Yuilice可以对这个字符串进行一些操作,操作的内容如下。
- Yuilice可以选中下标为i(1≤i≤S.length)的字符,将位于下标i后的所有字符i≤j≤S.length全部变为相反的数,例如0全部变成1,1全部变成0。
现在,Yuilice想知道,他最少需要几次操作,才可以将字符串S变为不递减的字符串?
输入格式
第一行输入一个正整数t(1≤t≤104),代表接下来有t组样例测试。
随后t行,每行给出一个数字n(1≤n≤105),代表字符串S的长度。
输出格式
每一组样例,输出一个整数代表其最少操作次数
样例 #1
样例输入 #1
5
1
1
3
101
5
10101
10
1010101010
7
0001000
样例输出 #1
0
2
4
9
1
提示
NOTE
第一组样例当中,字符串本身便不是递减的。
第二组样例当中,我们需要在i=2的时候转变字符串后两个字符变为10,于i=3的时候转变后一个字符为1,最后将字符串变为111则可完成。