CF1827C Palindrome Partition

题目描述

子串是指给定字符串中连续且非空的一段字母,且不改变原有顺序。 偶数回文串是指长度为偶数且正着读和反着读都相同的字符串。例如,字符串 "zz"、"abba"、"abccba" 是偶数回文串,但字符串 "codeforces"、"reality"、"aba"、"c" 不是。 美丽串是指偶数回文串,或者可以分割成若干个更小的偶数回文串的字符串。 给定一个由 $n$ 个小写拉丁字母组成的字符串 $s$,请你计算 $s$ 中美丽子串的数量。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每组测试用例的第一行包含一个整数 $n$($1 \le n \le 5\cdot 10^5$)。 第二行包含一个字符串 $s$,字符串 $s$ 仅由小写拉丁字母组成,长度为 $n$。 保证所有测试用例中 $n$ 的总和不超过 $5\cdot 10^5$。

输出格式

对于每组测试用例,输出一个整数,表示美丽子串的数量。

说明/提示

在第一个测试用例中,美丽子串为 "abaaba"、"baab"、"aa"。 在最后一个测试用例中,美丽子串为 "aa"(出现两次)、"abba"、"bb"、"bbaa"、"abbaaa"。 由 ChatGPT 4.1 翻译