AT_arc163_a [ARC163A] Divide String
题目描述
给定一个长度为 $N$ 的仅包含小写英文字母的字符串 $S$。请判断是否可以将 $S$ 分割为 $2$ 个或更多连续的子字符串,并且这些子字符串按字典序严格递增排列。
更严格地说,判断是否存在一个字符串序列 $t=(t_1,t_2,\dots,t_k)$,满足以下所有条件:
- 序列长度 $k$ 至少为 $2$。
- 每个 $t_i$ 都非空($1 \le i \le k$)。
- 按顺序连接 $t_1,t_2,\dots,t_k$ 恰好等于 $S$。
- 对于任意满足 $1 \le i < k$ 的整数 $i$,都有 $t_i$ 在字典序上严格小于 $t_{i+1}$。
给定 $T$ 组测试数据,请分别输出每组的答案。
什么是字典序?对于字符串 $S = S_1S_2\ldots S_{|S|}$ 和 $T = T_1T_2\ldots T_{|T|}$,若满足以下 1. 或 2.,则称 $S$ 在字典序上小于 $T$。其中 $|S|, |T|$ 分别表示 $S,T$ 的长度。
1. $|S| < |T|$ 且 $S_1S_2\ldots S_{|S|} = T_1T_2\ldots T_{|S|}$。
2. 存在整数 $1 \leq i \leq \min\lbrace |S|, |T| \rbrace$,同时满足:
- $S_1S_2\ldots S_{i-1} = T_1T_2\ldots T_{i-1}$
- $S_i$ 是按字母顺序小于 $T_i$ 的字符。
输入格式
输入按以下格式从标准输入读入。
> $T$
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_T$
其中,第 $i$ 个测试用例 $\mathrm{case}_i$ 格式如下:
> $N$ $S$
输出格式
输出 $T$ 行。
第 $i$ 行输出第 $i$ 个测试用例的答案。如果可以将 $S$ 按要求分割,输出 `Yes`,否则输出 `No`。
说明/提示
### 数据范围
- $1 \le T \le 2000$
- $2 \le N \le 2000$
- $S$ 是长度为 $N$ 的小写英文字母字符串
- 所有测试用例中 $N$ 的总和不超过 $2000$
### 样例解释 1
第 $1$ 个测试用例,可以将 $S$ 分割为 `a`、`ba`、`c`。第 $2$ 个测试用例,无论如何分割都无法使子串按字典序严格递增。
由 ChatGPT 4.1 翻译