#YDRG006F. 字符串匹配问题
字符串匹配问题
题目背景
首先给出如下定义:
- 子串 :依次取出字符串中 个字符到第 个字符后,顺序拼接得到的新字符串。
- 子串内的单个字符 :表示子串 从左向右的第 个字符。
- 子串的匹配:两个子串长度相等,且对应位置上的字符相同。
题目描述
给定一个长度为 的字符串和 次询问。每次询问会取出这个字符串的两个子串 与 ,并询问这两个子串是否匹配。
但出题人很粗心。在取出字符串时,他不小心把子串 的每个字符都用另一个字符替换掉了(可能替换后和原来一样)。同时,替换过程存在如下性质:若原来子串 的某个位置上的字符 的字典序大于或小于该子串内另一个位置上的字符 的字典序,那么在替换后,这种偏序关系仍然成立。设 为替换后的字符串,则以上性质可以被如此表述:
$$\forall l_1\leq p,q\leq r_1,\\ [l_1,r_1]_p < [l_1,r_1]_q \Longleftrightarrow [l_1,r_1]'_p < [l_1,r_1]'_q $$但问题在于:我们只知道子串 根据上述规则被替换了,但并不知道该子串中的每个字符具体被替换成了什么。现在好奇的出题人想知道,被替换后的子串 和未做改动的子串 是否有可能 匹配呢?
注意,询问与询问之间彼此独立。
输入格式
第 行共两个整数 表示串长和询问数。
第 行共 个整数表示这个字符串每个位置上的字符的字典序。
第 行,每行 个正整数分别表示 。
输出格式
对于每个询问,输出 Yes
或 No
表示是否 可能 匹配。
样例 #1
样例输入 #1
6 3
1 1 4 5 5 9
1 3 4 6
1 2 2 3
1 2 4 5
样例输出 #1
Yes
No
Yes
提示
我们令 表示第 个字符的字典序。
对于 的数据,保证 且 。
开启子任务捆绑。
测试点编号 | 特殊性质 | ||
---|---|---|---|
无 | |||
保证 | |||
保证 | |||
无 |
每个子任务分值为子任务中测试点数量乘 。