#A. 回文字符串

    Type: Default 1000ms 256MiB

回文字符串

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

作为一个新手,小明刚学了回文字符串,知道了一个字符串如果关于中心对称,则该字符串为回文字符串。

于是他自己就发明了属于他自己的回文字符串,即符合以下条件的字符串 SS 是回文字符串:

首先把字符串 SS 分割成 nn 个子串 S1,S2,,SnS_1,S_2,\ldots,S_n,即 S1+S2++Sn=SS_1+S_2+\ldots+S_n = S(其中 ++ 为字符串拼接操作)。

分割成的子串数量需要大于 11,且不能为空,即 n>1n > 1SiS_i 为非空子串。

对于所有的 i[1,n]i \in[1, n] 有:要么 SiS_iSni+1S_{n−i+1} 相等,要么 SiS_iSni+1S_{n−i+1} 互为回文。(补充说明:字符串 AABB 互为回文指 AA 倒过来与 BB 相等,反之亦然。举例说明:abc\texttt{abc}cba\texttt{cba} 互为回文。)

给定一个字符串 SS,请你帮助小明确定该字符串是否是在上述规则下的回文字符串。

如果是,他还想将字符串 SS 分成尽可能多的子串。

输入格式

一行一个字符串 SS

输出格式

如果不能满足要求,输出一行一个字符串 NO\texttt{NO};否则,输出两行,第一行一个字符串 YES\texttt{YES},第二行一个整数 nn 表示最大的子串数量。

样例 #1

样例输入 #1
abcababcba
样例输出 #1
YES 
8

样例 #2

样例输入 #2
goodluckhavefun
样例输出 #2
NO

样例 #3

样例输入 #3
wahacodewaha
样例输出 #3
YES
3

提示

样例解释
  • 样例 11 解释:最多可以把字符串分成 (a)(b)(c)(ab)(ab)(c)(b)(a)\texttt{(a)(b)(c)(ab)(ab)(c)(b)(a)} 共 8 个子串。
  • 样例 22 解释:很显然不存在满足题意的分割方案。
  • 样例 33 解释:最多可以把字符串分成 (waha)(code)(waha)\texttt{(waha)(code)(waha)} 共 3 个子串。
数据范围

对于 30%30\% 的数据,1S101\le |S|\le 10;(其中 SS 为给定字符串的长度)

对于 60%60\% 的数据,1S1031\le |S |\le 10^3

其中有 30%30\% 的数据,输入的字符串为回文字符串;

对于 100%100\% 的数据,1S1041\le| S |\le10^4,保证输入的字符串全为小写字母。

入门(A)组-1

Not Claimed
Status
Done
Problem
3
Open Since
2025-2-14 17:30
Deadline
2025-2-22 23:59
Extension
24 hour(s)