AtCoder Beginner Contest 196 F - Substring 2

そのままSとTをコンボリューションすると下図のようになる

f:id:yagura37s:20211007153136p:plain

図1

f:id:yagura37s:20211007153200p:plain

図2

配列の4番目には、S[3]*T[1] + S[2]*T[2]*S[1]*T[3]

配列の5番目には、S[4]*T[1] + S[3]*T[2]*S[2]*T[3]

配列の6番目には、S[5]*T[1] + S[4]*T[2]*S[3]*T[3]

 

が入っている

これが仮に

 

配列の4番目には、S[1]*T[1] + S[2]*T[2]*S[3]*T[3]

配列の5番目には、S[2]*T[1] + S[3]*T[2]*S[4]*T[3]

配列の6番目には、S[3]*T[1] + S[4]*T[2]*S[5]*T[3]

 

であれば、配列の4番目にはS[1..3]とT[1..3]で両方とも1みたいな数値が入っている。

 

 SかTのどっちかを反転する。

 convolutionをとる(両方とも1みたいな数値を計算)

 SとTの配列の中身をすべて反転する

    convolutionをとる(両方とも0みたいな数値を計算)

で答えが出る。

 

 

 

 

解説見た 難しかった。慣れてたらいけるかも?