J - Repeat Strings Editorial

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 800800

問題文

ab からなる文字列 SS があって、以下の操作を好きな回数だけ行うことができます。

  • SS の連続する区間 [l,r][l, r] を選ぶ。lkrl \leq k \leq r を満たすすべての整数 kk に対し、SkS_ka なら SkS_kb に、SkS_kb なら SkS_ka に置き換える。

QQ 個の 文字列 TiT_i が与えられます。各 TiT_iab からなります。TiT_i1010010^{100} 回連結し S+1|S|+1 文字目以降をすべて切り落とした文字列を TiT'_i とします。

それぞれの文字列 TiT'_i に対し、SSTiT'_i に一致させるために必要な操作回数の最小値を求めてください。

制約

  • 1S2×1051 \leq |S| \leq 2 \times 10^5
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1Ti2×1051 \leq |T_i| \leq 2 \times 10^5
  • TiT_i の長さの合計は 2×1052 \times 10^5 以下
  • SS, TiT_iab からなる文字列
  • QQ は整数

入力

入力は以下の形式で標準入力から与えられる。

SS
QQ
T1T_1
T2T_2
::
TQT_Q

出力

QQ 行出力せよ。ii 行目には SSTiT'_i に一致させるために必要な操作回数の最小値を出力せよ。


入力例 1Copy

Copy
babaabbabab
4
abab
b
babaabba
aaaaaaaaaaab

出力例 1Copy

Copy
2
4
0
5

それぞれの TiT'_i は次の通りです。

  • T1=T'_1 = abababababa
  • T2=T'_2 = bbbbbbbbbbb
  • T3=T'_3 = babaabbabab
  • T4=T'_4 = aaaaaaaaaaa

例えば SST1T'_1 に一致させるために必要な操作回数の最小値は 22 です。babaabbababababbaababaabababababa の手順で達成可能です。



2025-04-14 (Mon)
08:53:36 +00:00