#3866. [科大国创杯小学组 2025] 改写

[科大国创杯小学组 2025] 改写

题目描述

小可可在学习字符串算法!

一个长度为 mm 的字符串 rr 是回文的,当且仅当 ri=rm+1ir_i = r_{m+1-i} 对所有 1im1 \leq i \leq m 均成立。例如 aaabaaa\tt{aaabaaa}abba\tt{abba} 都是回文串,但 aaabaa\tt{aaabaa} 不是回文串。

给定一个字符串 ss,把 ss 分成若干个非空子段,使得每一个子段都不是回文的,同时最大化划分出的子段数目,请你输出最大划分数,无解则输出 1-1

子段的定义为:一个字符串保留任意连续字符后形成的字符串。

由于字符串 ss 可能很长,我们将会按照 c,lenc, len 的形式给出整个字符串,具体含义见输入格式。

输入格式

第一行一个整数 TT 表示数据组数。

对于每组数据,第一行输入一个数 nn 表示极长连续相同字母段的数量。

接下来 nn 行中,第 ii 行包括一个 aazz 之间的小写字母 cic_i 和一个整数 lenilen_i,分别表示该段的数字以及长度,保证对于所有大于 11ii,均满足 ci1cic_{i-1} \neq c_i

输出格式

输出共 TT 行,每行输出一个整数,表示最大的划分段数,若无解则输出 1-1

输入输出样例 #1

输入 #1

5
2
b 1
a 1
1
b 4
7
a 2
b 2
a 1
b 2
a 1
b 1
a 1
5
a 2
b 1
a 2
c 2
a 2
3
a 1
b 1
a 1

输出 #1

1
-1
4
3
-1

说明/提示

样例解释

  • 对于第一组数据,序列为 ba\tt{ba},且只存在 ba\tt{ba} 这一种划分方案,因此答案为 11
  • 对于第二组数据,序列为 bbbb\tt{bbbb},显然没有合法方案。
  • 对于第三组数据,序列为 aabbabbaba\tt{aabbabbaba},存在一种划分出四段的方案: aabb\tt{aabb}ab\tt{ab}ba\tt{ba}ba\tt{ba},可以证明没有答案更优的划分方式。
  • 对于第四组数据,序列为 aabaaccaa\tt{aabaaccaa},存在一种划分出三段的方案: aaba\tt{aaba}ac\tt{ac}caa\tt{caa},可以证明没有答案更优的划分方式。
  • 对于第五组数据,序列为 aba\tt{aba},容易发现无论怎么划分,都至少有一个回文串,所以无解。

约定和数据范围

  • 数据点 11T=10T = 101n31 \leq n \leq 31leni21 \leq len_i \leq 2
  • 数据点 22T=10T = 101n31 \leq n \leq 31leni1091 \leq len_i \leq 10^9
  • 数据点 3,43, 4T=10T = 101n1501 \leq n \leq 1501leni21 \leq len_i \leq 2
  • 数据点 5,65, 6T=10T = 101n1501 \leq n \leq 1501leni1091 \leq len_i \leq 10^9
  • 数据点 797 \sim 9T=10T = 101n2.5×1031 \leq n \leq 2.5 \times 10^31leni21 \leq len_i \leq 2
  • 数据点 101210 \sim 12T=10T = 101n2.5×1031 \leq n \leq 2.5 \times 10^31leni1091 \leq len_i \leq 10^9
  • 数据点 131613 \sim 16T=10,1n105,1leni2T = 10, 1 \leq n \leq 10^5, 1 \leq len_i \leq 2
  • 数据点 172017 \sim 20T=10,1n105,1leni109T = 10, 1 \leq n \leq 10^5, 1 \leq len_i \leq 10^9