AtCoder Beginner Contest 287 D問題 Match or Not
問題
提出解答
問題の概要
長さが等しい つの文字列
に対して, 以下を満たすとき,
はマッチするという.
に含まれる
を独立に英小文字に置き換えることによって,
を一致させることができる.
このとき, に対して, 以下の問に答えよ.
を
の先頭
文字と末尾
文字をこの順に連結させた文字列とする. このとき,
と
はマッチするか?
制約
は英小文字列
解法
まず, 長さが等しい つの文字列
に対して, 以下は同値である.
はマッチする.
全てに対して, 以下が成り立つ:
の
文字目は
としたとき, 以下のうちの少なくとも
つが成り立つ.
ここで, に対して,
と
の違いは
文字目だけである. このことを利用する.
集合 を次のようにして定義する. ただし,
の
文字目を
と書く.
このとき, に対して以下が成り立つ.
ここで, ならばマッチ可能, そうでなければマッチ不可能である.
なお, を一々生成する時間はないので,
を使いまわして
を作ることによって, 全ての
に対する判定を合計で
時間で判定できる.