CF2121B Above the Clouds

题目描述

给定一个长度为 $n$ 的字符串 $s$,该字符串仅由小写拉丁字母组成。请判断是否存在三个非空字符串 $a$、$b$ 和 $c$,使得: - $a + b + c = s$,即字符串 $a$、$b$、$c$ 连接后的结果等于 $s$。 - 字符串 $b$ 是字符串 $a + c$ 的子串,即 $a$ 和 $c$ 连接后的字符串包含 $b$ 作为子串。 $^*$ 字符串 $a$ 和 $b$ 的连接定义为 $a + b = a_1a_2\ldots a_pb_1b_2\ldots b_q$,其中 $p$ 和 $q$ 分别为 $a$ 和 $b$ 的长度。例如,字符串 "code" 和 "forces" 的连接结果为 "codeforces"。 $^\dagger$ 如果字符串 $a$ 可以通过从字符串 $b$ 的开头删除若干(可能为零或全部)字符,以及从结尾删除若干(可能为零或全部)字符得到,则称 $a$ 是 $b$ 的子串。

输入格式

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

输出格式

对于每组测试用例,如果存在满足条件的非空字符串 $a$、$b$、$c$,输出 "Yes";否则输出 "No"。 你可以以任意大小写输出答案。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定答案。

说明/提示

在第一个测试用例中,存在唯一的非空字符串 $a$、$b$、$c$,使得 $a + b + c = s$。它们分别为 $a = $ "a",$b = $ "a",$c = $ "a"。$a$ 和 $c$ 的连接结果为 $a + c = $ "aa",$b$ 是该字符串的子串。 在第六个测试用例中,可以选择 $a = $ "a",$b = $ "ab",$c = $ "b"。$a$ 和 $c$ 的连接结果为 $a + c = $ "ab",$b$ 是该字符串的子串。 在第七个测试用例中,可以选择 $a = $ "ab",$b = $ "a",$c = $ "ca"。$a$ 和 $c$ 的连接结果为 $a + c = $ "abca",$b$ 是该字符串的子串。 由 ChatGPT 4.1 翻译