求助(悬关)
  • 板块学术版
  • 楼主huanglihuan
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/8 20:50
  • 上次更新2023/11/8 22:20:39
查看原帖
求助(悬关)
794484
huanglihuan楼主2023/11/8 20:50

求01反转次数

题目描述

Yuilice最近给学生们上了一节动态规划的课程,为了让各位同学了解到动态规划的核心内容是划分阶段与建立状态转移方程,于是他出了这一道题。

Yuilice会给各位同学一个字符串SS,这个字符串SS只会由字符00与字符11组成,Yuilice可以对这个字符串进行一些操作,操作的内容如下。

  • Yuilice可以选中下标为i(1≤i≤S.length)i(1 \leq i \leq S.length)的字符,将位于下标ii后的所有字符i≤j≤S.lengthi \leq j \leq S.length全部变为相反的数,例如0全部变成1,1全部变成0。

现在,Yuilice想知道,他最少需要几次操作,才可以将字符串SS变为不递减的字符串?

输入格式

第一行输入一个正整数t(1≤t≤104)t(1 \leq t \leq 10^4),代表接下来有tt组样例测试。

随后tt行,每行给出一个数字n(1≤n≤105)n(1 \leq n \leq 10^5),代表字符串SS的长度。

输出格式

每一组样例,输出一个整数代表其最少操作次数

样例 #1

样例输入 #1

5
1
1
3
101
5
10101
10
1010101010
7
0001000

样例输出 #1

0
2
4
9
1

提示

NOTE

第一组样例当中,字符串本身便不是递减的。

第二组样例当中,我们需要在i=2i = 2的时候转变字符串后两个字符变为1010,于i=3i = 3的时候转变后一个字符为11,最后将字符串变为111111则可完成。

2023/11/8 20:50
加载中...