atcoder#ABC285F. [ABC285F] Substring of Sorted String

[ABC285F] Substring of Sorted String

题目描述

英小文字からなる長さ N N の文字列 S S Q Q 個のクエリが与えられます。クエリを順に処理してください。

クエリは以下の 2 2 種類です。

  • 1 x cS S x x 文字目を文字 c c に置き換える
  • 2 l rS S を文字の昇順に並び替えて得られる文字列を T T とする。S S l l 文字目から r r 文字目までからなる文字列が T T の部分文字列であるとき Yes、部分文字列でないとき No を出力する

部分文字列とは? S S 部分文字列とは、S S の先頭から 0 0 文字以上、末尾から 0 0 文字以上削除して得られる文字列のことをいいます。 例えば、ababc の部分文字列ですが、acabc の部分文字列ではありません。

输入格式

入力は以下の形式で標準入力から与えられる。ただし、queryi \text{query}_i i i 番目のクエリを表す。

N N S S Q Q query1 \text{query}_1 query2 \text{query}_2 \vdots queryQ \text{query}_Q

输出格式

問題文中の指示に従ってクエリを処理せよ。

题目大意

给定一个长度为 NN 的字符串 SS,下标从 11 开始,有以下两种操作:

  • 1 x c:将字符串 SS 中的第 xx 个字符替换为 cc
  • 2 l r:将 SS 中的字符按升序排列,得到新字符串 TT,询问串 Sl,l+1,...,rS_{l,l+1,...,r} 是否为 TT 的子串。

对于每个操作 22,输出 Yes 或者 No 表示结果。

6
abcdcf
4
2 1 3
2 2 6
1 5 e
2 2 6
Yes
No
Yes

提示

制約

  • 1 N  105 1\leq\ N\ \leq\ 10^5
  • S S は英小文字からなる長さ N N の文字列
  • 1  Q  105 1\ \leq\ Q\ \leq\ 10^5
  • 1 1 種類目のクエリにおいて、1  x  N 1\ \leq\ x\ \leq\ N
  • 1 1 種類目のクエリにおいて、c c は英小文字
  • 2 2 種類目のクエリにおいて、1  l  r  N 1\ \leq\ l\ \leq\ r\ \leq\ N

Sample Explanation 1

- 1 1 番目のクエリにおいて、S S を文字の昇順に並び替えて得られる文字列 T T abccdf です。 S S 1 1 文字目から 3 3 文字目までからなる文字列は abc であり T T の部分文字列です。よって Yes を出力します。 - 2 2 番目のクエリにおいて、S S を文字の昇順に並び替えて得られる文字列 T T abccdf です。 S S 2 2 文字目から 6 6 文字目までからなる文字列は bcdcf であり T T の部分文字列ではありません。よって No を出力します。 - 3 3 番目のクエリにより、S S 5 5 文字目が e に置き換えられ、S S abcdef となります。 - 4 4 番目のクエリにおいて、S S を文字の昇順に並び替えて得られる文字列 T T abcdef です。 S S 2 2 文字目から 6 6 文字目までからなる文字列は bcdef であり T T の部分文字列です。よって Yes を出力します。