#arc163a. [arc163_a]Divide String

[arc163_a]Divide String

问题描述

给定一个长度为 NN 的小写英文字母组成的字符串 SS。判断是否可以将 SS 分割为两个或更多连续的子字符串,使它们在词典顺序上严格递增。

准确地说,确定是否存在一个字符串序列 t=(t1,t2,dots,tk)t=(t_1,t_2,\\dots,t_k) 满足以下所有条件。

  • 序列的长度 kk 至少为 22

  • tit_i 不为空。(1leilek1 \\le i \\le k)

  • 按照顺序连接 t1,t2,dots,tkt_1,t_2,\\dots,t_k 得到 SS

  • 对于每个满足 1lei<k1 \\le i < k 的整数 iitit_i 在词典顺序上严格小于 ti+1t_{i+1}

给定 TT 个测试用例,请找出每个测试用例的答案。

什么是词典顺序?

如果字符串 S=S1S2ldotsSSS = S_1S_2\\ldots S_{|S|} 满足以下两个条件之一,则称其词典顺序小于字符串 T=T1T2ldotsTTT = T_1T_2\\ldots T_{|T|}。这里,S|S|T|T| 表示 SSTT 的长度。

  1. SltT|S| \\lt |T| 并且 S1S2ldotsSS=T1T2ldotsTSS_1S_2\\ldots S_{|S|} = T_1T_2\\ldots T_{|S|}
  2. 存在 1leqileqminlbraceS,Trbrace1 \\leq i \\leq \\min\\lbrace |S|, |T| \\rbrace,满足以下两个条件。
    • S1S2ldotsSi1=T1T2ldotsTi1S_1S_2\\ldots S_{i-1} = T_1T_2\\ldots T_{i-1}
    • 字符 SiS_i 在字母表中排在 TiT_i 之前。

约束条件

  • 1leTle20001 \\le T \\le 2000
  • 2leNle20002 \\le N \\le 2000
  • SS 是由小写英文字母组成的长度为 NN 的字符串。
  • 单次输入中所有测试用例的 NN 的总和不超过 20002000

输入

从标准输入读取输入,其格式如下:

TT mathrmcase1\\mathrm{case}_1 mathrmcase2\\mathrm{case}_2 vdots\\vdots mathrmcaseT\\mathrm{case}_T

这里,mathrmcasei\\mathrm{case}_i 表示第 ii 个测试用例。每个测试用例的格式如下:

NN SS

输出

输出 TT 行。

ii(1leileT)(1 \\le i \\le T) 应输出 Yes,如果可能将第 ii 个测试用例中的 SS 划分为满足条件的子字符串,则输出 Yes;否则输出 No


示例输入 1

5
4
abac
3
cac
2
ab
12
abababababab
5
edcba

示例输出 1

Yes
No
Yes
Yes
No

对于第一个测试用例,可以将 SS 划分为 a, ba, c

对于第二个测试用例,无法将 SS 划分为满足条件的子字符串。