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 翻译