問題一覧 > 通常問題

No.3239 Omnibus

レベル : / 実行時間制限 : 1ケース 10.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 33
作問者 : Nauclhlt🪷 / テスター : 👑 p-adic
ProblemId : 12595 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-08-15 19:20:27

問題文

バス (bus) はオムニバス (omnibus) の略語です。

このように、英小文字からなる長さ $3$ 以上の文字列 $X$ に対して、$X$ の末尾 $3$ 文字を取り出した文字列を $X$ の略語と呼ぶことにします。

$i$ 文字目が文字 $S_i$ である長さ $N$ の文字列 $S$ が与えられます。$Q$ 個のクエリを順に処理してください。

各クエリは次のいずれかのタイプです。

  • タイプ $1$ 1 k x : $S_k$ を文字 $x$ に変更する
  • タイプ $2$ 2 l r a : $S$ の $l$ 文字目から $r$ 文字目を取り出した文字列を $T$ とする。$T$ の長さ $3$ 以上の(連続)部分文字列で、略語が $a$ と一致するものの個数を出力する

ただし、部分文字列は、文字列として同じでも取り出す位置が異なれば区別します。

入力

$N\ Q$
$S$
$query_1$
$query_2$
$\vdots$
$query_Q$
  • $3\leq N\leq 2\times 10^5$
  • $1\leq Q\leq 2\times 10^5$
  • $S$ は英小文字からなる長さ $N$ の文字列
  • $N, Q$ は整数

ここで $query_i (1\leq i\leq Q)$ は $i$ 番目のクエリであり、以下のいずれかの形式です。

$1\ k\ x$
  • $k$ は $1\leq k\leq N$ を満たす整数
  • $x$ は英小文字
$2\ l\ r\ a$
  • $1\leq l\leq r\leq N$
  • $a$ は英小文字からなる長さ $3$ の文字列
  • $l, r$ は整数

出力

タイプ $2$ のクエリに対する答えを順に出力してください。$k$ 行目には、$k$ 個目のタイプ $2$ のクエリに対する答えを出力してください。ただし、タイプ $2$ のクエリが必ず $1$ つ以上与えられるとは限りません。
最後に改行してください。

サンプル

サンプル1
入力
14 5
ambushbusiness
2 1 5 bus
2 1 12 bus
1 3 x
2 1 12 bus
2 3 10 usi
出力
3
10
7
6
  • $1$ つ目のクエリについて、$T=$ambus です。条件を満たす部分文字列は ambusmbusbus の $3$ つです。よって $3$ を出力します
  • $2$ つ目のクエリについて、$T=$ambushbusine です。条件を満たす部分文字列は $10$ 個あるので、$10$ を出力します
  • $3$ つ目のクエリについて、$S_3\leftarrow$x と変更します。その後、$S=$amxushbusiness となります
  • $4$ つ目のクエリについて、$T=$amxushbusine です。条件を満たす部分文字列は $7$ 個あるので、$7$ を出力します
  • $5$ つ目のクエリについて、$T=$xushbusi です。条件を満たす部分文字列は $6$ 個あるので、$6$ を出力します

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。