#AT2442. F - Substring of Sorted String

F - Substring of Sorted String

当前没有测试数据。

F - 有序字符串的子串

得分:$500$ 分

问题描述

给定一个长度为 $N$ 的由小写英文字母组成的字符串 $S$,以及 $Q$ 个查询。按照查询的顺序进行处理。

每个查询是以下两种之一:

  • 1 x c :将 $S$ 的第 $x$ 个字符替换为字符 $c$。
  • 2 l r :令 $T$ 是按照字母升序对 $S$ 的字符排序后得到的字符串。如果由 $S$ 的第 $l$ 个字符到第 $r$ 个字符组成的字符串是 $T$ 的一个子串,则输出 Yes,否则输出 No
什么是子串? 一个字符串 $S$ 的 子串 是通过删除其中 $0$ 个或多个初始字符和 $0$ 个或多个结束字符而得到的字符串。 例如,ab 是字符串 abc 的子串,而 ac 不是字符串 abc 的子串。

约束条件

  • $1\leq N \leq 10^5$
  • $S$ 是一个长度为 $N$ 的由小写英文字母组成的字符串。
  • $1 \leq Q \leq 10^5$
  • 对于每个第一种类型的查询,$1 \leq x \leq N$。
  • 对于每个第一种类型的查询,$c$ 是一个小写英文字母。
  • 对于每个第二种类型的查询,$1 \leq l \leq r \leq N$。

输入

输入为标准输入格式,具体如下,其中第 $i$ 个查询表示为 $\text{query}_i$:

NN

SS

QQ

query1\text{query}_1

query2\text{query}_2

\vdots

queryQ\text{query}_Q

输出

按照问题描述进行处理查询。


6
abcdcf
4
2 1 3
2 2 6
1 5 e
2 2 6
Yes
No
Yes
  • 在第 $1$ 个查询中,字符串 $T$ 是将 $S$ 的字符按升序排序后得到的 abccdf。 $S$ 的由第 $1$ 到第 $3$ 个字符组成的字符串 abc 是 $T$ 的一个子串,因此应输出 Yes
  • 在第 $2$ 个查询中,字符串 $T$ 是将 $S$ 的字符按升序排序后得到的 abccdf。 $S$ 的由第 $2$ 到第 $6$ 个字符组成的字符串 bcdcf 并不是 $T$ 的一个子串,因此应输出 No
  • 第 $3$ 个查询将 $S$ 的第 $5$ 个字符设为 e,使得 $S$ 变为 abcdef
  • 在第 $4$ 个查询中,字符串 $T$ 是将 $S$ 的字符按升序排序后得到的 abcdef。 $S$ 的由第 $2$ 到第 $6$ 个字符组成的字符串 bcdef 是 $T$ 的一个子串,因此应输出 Yes