みんなのプロコン 2019 D問題:Ears
問題. Ears
数直線上を次を満たすように連続的に移動する.
・移動可能な場所は 0 以上 以下
・整数座標の点からスタートして整数座標の点でゴールする
・整数座標の点でのみ方向転換可能
整数座標の点 に対して, を通過すると に1点が加算される.
が与えられたとき,任意の移動の中で の最小値を求めよ.
制約: ,
解法.動的計画法
本番で解けなかったので解説を参照しました.
みんなのプロコン 2019 予選 解説 @DEGwer
スタート,ゴール,訪れた座標の最小値と最大とを決めると 5 つの区間に分割される(各区間は空となるかもしれない).このとき,スタートとゴールの位置関係によらず, の値は区間ごとに左から 0, 1 以上の任意の偶数,1 以上の任意の奇数,1 以上の任意の偶数,0 とするような移動方法が存在する.したがって,dp[i][j]
を までを考慮したときに座標 が 5 つの区間の 番目に属するときの目的関数値の最小値,として動的計画法を行う.
計算時間:
本番中は意味の分からない動的計画法をしようとしてダメダメだった.
状態は最初から頭の良いことを考えようとせずに,削除する方向に考える方がいい(何度も思っているけど解けないのは本当にダメ).