phyllo’s algorithm note

レッドコーダーへの道のりは遠い。休んでる場合じゃない!

ABC031 D. 語呂合わせ

問題

数字列v_iと文字列w_iがNペア与えられる。
数字列v_iの各数字(1文字)は、1からKまでの数字で、それに3文字以下の文字列が割り当てられている。
w_iは、v_iの各数字を割り当てられた文字列にして順番に連結したものになっている。

v_iとw_iから、元の数字と文字列の割当を復元せよ。
複数ある可能性がある場合はどれか一つを出力せよ。

制約

  • 1 <= K <= 9
  • 1 <= N <= 50
  • 1 <= |v_i| <= 9
  • 1 <= |w_i| <= 27

解法

各数字に割り当てられた文字列の長さを決め打つと、w_iから一意に文字列が決められる。
(決まらない場合はその長さの解はなし)

3文字以下のため、3^K通りの組み合わせがあり、それでチェックして条件を満たすものをチェックすれば良い。