#B. 音符消除

    传统题 1000ms 256MiB

音符消除

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

在音乐制作中,节奏是构成音乐的基本元素之一。音乐家们使用不同的音符来创作旋律,其中正拍('+')和反拍('-')是构成节奏的基础。在一首乐曲中,音符序列的记录可以表示为一个由正负号组成的字符串 SS

题目描述

音乐制作人 小 yy 正在构想一首乐曲的乐段数量。他有一串由正拍('+')和反拍('-')组成的音符序列 S,长度为 n。为了使乐曲更加和谐,要求每个乐段的开头音符与末尾音符 不相同

问 小 yy 最少可以将这首乐曲分成多少个乐段?

如果无法划分,输出 "-1" 即可。

例如 :

  1. +++--- ,可以分成一个乐段。
  2. ++--++,可以分成两个乐段。
  3. ++-++,无法划分。
  4. +--++--+,最少分成两个乐段,+--++--+即可

输入格式

第一行一个整数 T ,表示测试用例数量。

对于每组数据: 第一行包含一个整数 n ,表示乐曲的音符数量。 第二行一个长度为 n 的字符串 S ,表示音符序列。

输出格式

输出 T 行,每行一个整数,表示划分的最少乐段数量。

5
6
+++---
6
++--++
5
++-++
8
+--++--+
10
++--++++++
1
2
-1
2
2

提示

嘿嘿,大家可以试着自己来构造不同数量的乐段。是否存在最少分成三个或者四个乐段的情况呢~~

【数据范围】

测试点比例 T≤ n≤
30% 2 1
4 2
8 3
40% 100 6
30% 100

11月C++信奥月赛--算法强化

未参加
状态
已结束
规则
IOI
题目
4
开始于
2024-11-30 0:00
结束于
2024-12-7 0:00
持续时间
168 小时
主持人
参赛人数
125