次に、状態遷移を考えよう。
持っておきたいのは
とにかく石が多いルート
各石を持っているルート
個別ルート条件を満たしているルート(真エンド含む)
かな。
石とルート条件は0(満たしていない)1(満たしている)で持っておく。
dp[day,vis,word,des,mina,kuru,nam]
こんな風に持ちたいところだけど、プチコンだと配列の次元は4次元までなので、ビット列で管理する。次元増えると逆に読みにくいし。
dp[day,state]
ここから地獄の状態遷移を考えなきゃいけない。
まずは一番トラップ牧場な、真エンド条件を満たしているルート(下位3bitが111)からの遷移を考えとく。基本的には真エンド→真エンドの遷移しか許されない。(真エンドは石を持ち帰ることが出来ないため、他ルートと区別する必要がある)
例外として、キャラが消滅した場合は他ルートへ移動していいかな?(自信なし)
変数名
姿見せ:vis
言の葉:word
破壊:des
状態:state