AtCoder Beginner Contest 334 F問題 Christmas Present 2
問題
提出解答
解法
座標平面上の点 を とする.
動的計画法で解く. に対して, で, 問題を へ制限したときの距離の総和の最小値とする. このとき, 最終解答は になる.
ベースケースは のときで, このとき, 経由すべき点がないことから, 移動が発生しないので, である.
遷移式を考える. のときに, 連続して配るプレゼントの個数 で場合分けをする. 連続して 個配る場合における距離の総和を最小化する移動の方法は, 以下の手順をたどることになる.
- 点 から 点 へ移動.
- に対して, 点 から へ移動.
- 点 から点 へ移動.
- それ以降は を達成するように移動する.
よって, この場合における距離の総和の最小値は
となる.
これを について動かすことによって, の値は
となる.
ここで, とおくことにすると,
となる.
また, に対して,
とおくことにすると,
となる.
ここで, について,
が成り立つ.
は によらない一定の値である.
したがって, 次のことが高速にできるデータ構造があれば高速に を計算できる.
これを可能にするデータ構造としては遅延評価セグメント木がある.
よって, を遅延評価セグメント木によって適切に区間作用を行い を計算することによって, を 時間で求めることができる.