Official

F - Earn to Advance Editorial by kyopro_friends


\(1\) 種類目の行動を「所持金を \(P_{i,j}\) 増やす」ではなく「所持金を、いままで通過したマス全てについての \(P_{i,j}\) の max だけ増やす」としても答えは変わりません。

よってお金は必要になった時点で初めて必要なだけ稼ぐとしてよく、これにより移動経路を固定したときの最適な行動(の1つ)が一意に定まります。特にこのとき、マスの移動全てについて、移動直後の所持金は「いままで通過したマス全てについての \(P_{i,j}\) の max」未満です。

移動経路のうち必要な情報は「いままで通過したマス全てについての \(P_{i,j}\) の max」だけであることから、 \(\mathrm{DP}[C][P]\) を「マス \(C\) にいて、今まで通過したマス全てについての \(P_{i,j}\) の max が \(P\) であるときの、(行動回数, 所持金)の組の最適値(※)」と定めて DP を行うことができます。
※行動回数最小、タイなら所持金最大

この DP は状態数が \(O(N^4)\)、遷移が(連想配列などを用いて) \(O(1)\) となることから、全体で \(O(N^4)\) 時間で行うことができます。

posted:
last update: