SP19490 PAUWS - Pair and unpair weightest string
题目描述
有一次我去市场买泰迪熊。店主给我出了一个谜题,并说如果我能给他提供这个问题的正确代码,他会给我想要的东西打很大的折扣。
你会得到一个仅由 'A' 和 'B' 组成,长度为 $N$ 的字符串 $S$。你可以通过改变任意一个字符生成所有可能的字符串。然后,为每个字符串分配权重,找出具有最大权重的字符串,并返回这个最大权重。
分配权重的方法如下:
1. 将 $S[i]$ 与相邻的一个字符($S[i+1]$ 或 $S[i-1]$)配对。每个字符只能配对一次。配对组合仅限于 'AB' 或 'BA',其权重为 4。
2. 若 $S[i]$ 保持独立,权重为 1。
3. 每个字符只能选择一次配对或保持独立。
4. 考虑字符的转变:对于每个字符串,统计字符从原字符串 $S[i]$ 改变而来的数量 $K$($1 \leq i \leq N$)。
5. 对每个可能的字符串,计算总配对和独立字符的权重之和,再减去 $K$,这个结果即为字符串的权重。每个配对只算一次权重。
任务是找出字符串的最大权重。例如,若 $S = "ABB"$,可能的变换有 {"ABB", "ABA", "AAB", "AAA", "BBB", "BBA", "BAB", "BAA"},对应的权重为 {5, 4, 4, 1, 2, 3, 3, 2},其中最大权重为 5。
输入格式
第一行是测试用例数量 $t$。对于每个测试用例,第一行包含字符串的长度 $N$。第二行是字符串本身。
输出格式
针对每个测试用例,输出能够获得的最大字符串权重。
说明/提示
$1 \leq N \leq 10^5$,$1 \leq T \leq 500$。
**示例**
**输入**:
```
5
3
ABB
7
ABBBAAA
8
BAAAAAAA
12
AAAAAAAAAAAA
11
ABABBBABABA
```
**输出**:
```
5
12
13
18
21
```
**本翻译由 AI 自动生成**