atcoder#ABC287D. [ABC287D] Match or Not

[ABC287D] Match or Not

配点 : 400400

問題文

英小文字と ? からなる文字列 S,TS,T が与えられます。ここで、S>T|S| \gt |T| が成り立ちます(文字列 XX に対し、 X|X|XX の長さを表します)。

また、X=Y|X|=|Y| を満たす文字列 X,YX,Y は、次の条件を満たすとき及びそのときに限りマッチするといいます。

  • X,YX,Y に含まれる ? をそれぞれ独立に好きな英小文字に置き換えることで XXYY を一致させることができる

x=0,1,,Tx=0,1,\ldots,|T| に対して次の問題を解いてください。

  • SS の先頭の xx 文字と末尾の Tx|T|-x 文字を順番を保ったまま連結することで得られる長さ T|T| の文字列を SS' とする。SS'TT がマッチするならば Yes と、そうでなければ No と出力せよ。

制約

  • S,TS,T は英小文字と ? からなる文字列
  • 1T<S3×1051 \leq |T| \lt |S| \leq 3 \times 10^5

入力

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

SS

TT

出力

T+1|T|+1 行出力せよ。 ii 行目には x=i1x=i-1 に対する出力をせよ。

a?c
b?
Yes
No
No

x=0x=0 の場合、SS'?c となります。ここで、SS'11 文字目の ?b に、TT22 文字目の ?c に置き換えることで SS'TT を一致させることができるため、SS'TT はマッチします。このため、11 行目の出力は Yes です。 x=1,2x=1,2 の場合は SS' はそれぞれ aca? であり、TT とマッチしません。このため、2,32,3 行目の出力は No です。

atcoder
?????
Yes
Yes
Yes
Yes
Yes
Yes
beginner
contest
No
No
No
No
No
No
No
No