CF1107A Digits Sequence Dividing
题目描述
给定一个由 $n$ 个数字(每个数字从 $1$ 到 $9$)组成的序列 $s$。
你需要将它划分为至少两个连续的片段(片段指的是一段连续的元素),也就是说,你需要在序列中的某些数字之间放置分隔符,使得每个元素恰好属于一个片段,并且如果将划分后的每个片段看作一个整数序列,则每个后继片段所代表的整数都严格大于前一个片段。
更正式地说:如果划分结果为 $t_1, t_2, \dots, t_k$,其中 $k$ 是划分得到的片段数,则对于每个 $i$ 满足 $1 \le i < k$,都应满足 $t_{i} < t_{i+1}$(按整数大小比较,即将字符串转为整数后比较)。
例如,如果 $s=654$,你可以将其划分为 $[6, 54]$,这是一个合法的划分。但如果划分为 $[65, 4]$,则不合法,因为 $65 > 4$。如果 $s=123$,你可以划分为 $[1, 23]$、$[1, 2, 3]$,但不能划分为 $[12, 3]$。
你的任务是,对于每个独立的 $q$ 个询问,找到任意一个满足条件的划分方案。
输入格式
输入的第一行包含一个整数 $q$($1 \le q \le 300$),表示询问的数量。
第 $i$ 个询问的第一行包含一个整数 $n_i$($2 \le n_i \le 300$),表示第 $i$ 个询问的数字个数。
第 $i$ 个询问的第二行包含一个长度为 $n_i$ 的字符串 $s_i$,仅由 $1$ 到 $9$ 的数字组成。
输出格式
如果第 $i$ 个询问的数字序列无法按照题目要求划分为至少两个片段,则输出一行 "NO"。
否则,第一行输出 "YES"。第二行输出 $k_i$,表示你划分出的片段数。第三行输出 $k_i$ 个字符串 $t_{i,1}, t_{i,2}, \dots, t_{i,k_i}$,即你的划分方案。片段应按原始字符串顺序输出,也就是说,将这些片段依次拼接起来应还原为原始字符串 $s_i$。
具体可参考样例理解。
说明/提示
由 ChatGPT 4.1 翻译