E. 无回文
每个测试用例时间限制:2 秒
每个测试用例内存限制:256 兆字节
给定一个由小写拉丁字母组成的字符串 s。你需要对字符串进行划分†,将其分割为若干子串,使得每个子串都不是回文‡。
† 字符串 s 的划分是一个长度为 k 的有序字符串序列 t1,t2,…,tk,满足
t1+t2+⋯+tk=s
其中 + 表示字符串拼接操作。
‡ 一个字符串若正读与反读完全相同,则称其为回文。例如 racecar、abcba、a 均为回文;而 ab、dokibird、uniaji 不是回文。
输入格式
输入包含多组测试用例。
第一行输入一个整数 t,满足 1≤t≤104,表示测试用例数量。
每组测试用例输入一个由小写拉丁字母组成的字符串 s,满足 1≤∣s∣≤106。
保证所有测试用例的字符串长度之和满足
∑∣s∣≤106
输出格式
对于每组测试用例:
- 若存在合法划分,输出 YES;否则输出 NO。
- 若答案为 YES,第二行输出一个整数 k,表示划分后的子串数量。
- 第三行输出 k 个字符串 t1,t2,…,tk,任意一种合法划分均可。
样例输入
3
sinktheyacht
lllllllll
uwuowouwu
样例输出
YES
1
sinktheyacht
NO
YES
3
uw uow ouwu
说明
- 第一个测试用例中,字符串 sinktheyacht 本身不是回文,因此仅划分为自身一个子串即为合法方案。
- 第二个测试用例中,该字符串的任意子串均为回文,不存在合法划分。
- 第三个测试用例中,另一组合法划分可以是 [u,wu,owo,uwu]。