D. たくさんのゲーム
テストごとの制限時間
1 秒
テストごとのメモリ制限
256 メガバイト
入力
標準入力
出力
標準出力
Andrew , ヒョードルとアレックスは独創的な男です。今、彼らは 2 人のプレーヤー用の文字列を使用したゲームを発明しました。
n 個の空ではない文字列のグループが与えられたとします。ゲーム中、2 人のプレイヤーが一緒に単語を構築します。最初は単語は空です。プレイヤーは順番に移動します。自分のステップでは、プレーヤーは単語の末尾に 1 文字を追加する必要があります。結果として得られる単語は、グループ内の少なくとも 1 つの文字列の接頭辞である必要があります。プレイヤーは動けないと負けです。
アンドリューとアレックスは、このゲームを k 回プレイすることにしました。 i 番目のゲームの敗者であるプレイヤーが、(i?+?1) 番目のゲームで最初の動きをします。すべてのゲームの勝者は、最後 (k 番目) のゲームに勝ったプレイヤーであると決定しました。アンドリューとアレックスはすでにゲームを開始しています。ヒョードルは、両選手が最適なプレーをした場合にどちらが試合に勝つかを知りたいと考えています。彼を助けてください。
入力
最初の行には、2 つの整数 n と k (1?≤?n?≤?105; 1?≤?k?≤?109) が含まれています。
次の n 行はそれぞれ指定されたグループからの単一の空でない文字列が含まれます。グループのすべての文字列の合計の長さは 105 を超えません。グループの各文字列は英小文字のみで構成されます。
出力
最初に動いたプレイヤーが勝った場合は「First」を出力し、それ以外の場合は「」を出力します。 Second" (引用符なし)。
サンプル テスト
入力
2 3ab
出力
First
入力
3 1abc
出力
rree
入力
First
出力
1 2ab
出たN個の文字、按照规则(太长了、此処不翻译了)。 、可能です
解法:
最初にこれらの文字列を保存し、トライして保存し、トライによって簡単に型を取得できます。 DP、ここでの DP は、最高の値を取得するタイプの終了ではなく、特定のポイントを操作するために使用されます。 v に到達し、その後次のマッチングを実行する必要がある場合、先手が通過できるかどうか、lose[v] は先手が成功するかどうかを表します。节点 win[v] = win[v] | !win[子]、lose[v] = loss[v] | ![子供]を失います。 (各回の昇級者のため、次は先手ではないため、結果として肯定は次のノードの昇進関係関係になります)。最初のローカルにいる人は制御結果を操作でき、k の次の数に基づいて、移動できるかどうかを判断します。