[ABC285F] Substring of Sorted String
题意翻译
给定一个长度为 $N$ 的字符串 $S$,下标从 $1$ 开始,有以下两种操作:
- `1 x c`:将字符串 $S$ 中的第 $x$ 个字符替换为 $c$。
- `2 l r`:将 $S$ 中的字符按升序排列,得到新字符串 $T$,询问串 $S_{l,l+1,...,r}$ 是否为 $T$ 的子串。
对于每个操作 $2$,输出 `Yes` 或者 `No` 表示结果。
题目描述
[problemUrl]: https://atcoder.jp/contests/abc285/tasks/abc285_f
英小文字からなる長さ $ N $ の文字列 $ S $ と $ Q $ 個のクエリが与えられます。クエリを順に処理してください。
クエリは以下の $ 2 $ 種類です。
- `1 x c` : $ S $ の $ x $ 文字目を文字 $ c $ に置き換える
- `2 l r` : $ S $ を文字の昇順に並び替えて得られる文字列を $ T $ とする。$ S $ の $ l $ 文字目から $ r $ 文字目までからなる文字列が $ T $ の部分文字列であるとき `Yes`、部分文字列でないとき `No` を出力する
部分文字列とは? $ S $ の**部分文字列**とは、$ S $ の先頭から $ 0 $ 文字以上、末尾から $ 0 $ 文字以上削除して得られる文字列のことをいいます。 例えば、`ab` は `abc` の部分文字列ですが、`ac` は `abc` の部分文字列ではありません。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。ただし、$ \text{query}_i $ で $ i $ 番目のクエリを表す。
> $ N $ $ S $ $ Q $ $ \text{query}_1 $ $ \text{query}_2 $ $ \vdots $ $ \text{query}_Q $
输出格式
問題文中の指示に従ってクエリを処理せよ。
输入输出样例
输入样例 #1
6
abcdcf
4
2 1 3
2 2 6
1 5 e
2 2 6
输出样例 #1
Yes
No
Yes
说明
### 制約
- $ 1\leq\ N\ \leq\ 10^5 $
- $ S $ は英小文字からなる長さ $ N $ の文字列
- $ 1\ \leq\ Q\ \leq\ 10^5 $
- $ 1 $ 種類目のクエリにおいて、$ 1\ \leq\ x\ \leq\ N $
- $ 1 $ 種類目のクエリにおいて、$ c $ は英小文字
- $ 2 $ 種類目のクエリにおいて、$ 1\ \leq\ l\ \leq\ r\ \leq\ N $
### Sample Explanation 1
\- $ 1 $ 番目のクエリにおいて、$ S $ を文字の昇順に並び替えて得られる文字列 $ T $ は `abccdf` です。 $ S $ の $ 1 $ 文字目から $ 3 $ 文字目までからなる文字列は `abc` であり $ T $ の部分文字列です。よって `Yes` を出力します。 - $ 2 $ 番目のクエリにおいて、$ S $ を文字の昇順に並び替えて得られる文字列 $ T $ は `abccdf` です。 $ S $ の $ 2 $ 文字目から $ 6 $ 文字目までからなる文字列は `bcdcf` であり $ T $ の部分文字列ではありません。よって `No` を出力します。 - $ 3 $ 番目のクエリにより、$ S $ の $ 5 $ 文字目が `e` に置き換えられ、$ S $ は `abcdef` となります。 - $ 4 $ 番目のクエリにおいて、$ S $ を文字の昇順に並び替えて得られる文字列 $ T $ は `abcdef` です。 $ S $ の $ 2 $ 文字目から $ 6 $ 文字目までからなる文字列は `bcdef` であり $ T $ の部分文字列です。よって `Yes` を出力します。