100 atcoder#ABC138E. [ABC138E] Strings of Impurity

[ABC138E] Strings of Impurity

题目描述

英小文字からなる二つの文字列 s, t s,\ t が与えられます。次の条件を満たす整数 i i (1  i  10100 × s) (1\ \leq\ i\ \leq\ 10^{100}\ \times\ |s|) が存在するか判定し、存在する場合はそのような i i の最小値を求めてください。

  • s s 10100 10^{100} 個連結して得られる文字列を s s' とする。t t は、文字列 s1s2si {s'}_1{s'}_2\ldots{s'}_i (s s' の先頭 i i 文字) の部分列である。

输入格式

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

s s t t

输出格式

条件を満たす整数 i i が存在する場合はそのような i i の最小値を、存在しない場合は -1 を出力せよ。

题目大意

给定一个文字串 SS,和一个模式串 TT,将 SS 重复 1010010^{100} 次方,问匹配到第几个字符时刚好将 TT 匹配完(子数列),若能输出匹配完成的字符位置,若无法完成匹配,输出 1-1

contest
son
10
contest
programming
-1
contest
sentence
33

提示

注記

  • 文字列 a a の部分列とは、a a から 0 0 文字以上を削除して残った文字を相対的な順序を保ったまま連結して得られる文字列です。例えば、contest の部分列には net, c, contest などがあります。

制約

  • 1  s  105 1\ \leq\ |s|\ \leq\ 10^5
  • 1  t  105 1\ \leq\ |t|\ \leq\ 10^5
  • s, t s,\ t は英小文字からなる。

Sample Explanation 1

t = t\ = son は文字列 contestcon (s = s'\ = contestcontestcontest... の先頭 10 10 文字) の部分列であるため、i = 10 i\ =\ 10 は条件を満たします。 一方で、t t は文字列 contestco (s s' の先頭 9 9 文字) の部分列ではないため、i = 9 i\ =\ 9 は条件を満たしません。 同様に、8 8 以下の任意の整数も条件を満たしません。よって、条件を満たす整数 i i の最小値は 10 10 です。

Sample Explanation 2

t = t\ = programmings = s'\ = contestcontestcontest... の部分列ではありません。よって、条件を満たす整数 i i は存在しません。

Sample Explanation 3

ここにそのようなケースを置くことはできませんが、答えは 32 32 bit 整数に収まらない可能性があるのでご注意ください。