Alien DP をざっくり理解する
Alien DP という名前は Twitter でたまに見かけますが、その詳しい内容を調べようとしてもなかなか大変だったので備忘録もかねてここに書いておきます。
Alien DP は ABC で出題されており、その解説で詳しい説明がなされているのでネタバレをされてもよい方はそちらも参照すると良いでしょう。
数理的な詳しい解説は Monge グラフ上の $d$-辺最短路長を計算するアルゴリズム | Kyopro Encyclopedia of Algorithms になされているので、本記事では正当性の証明などは避けて直感的にどのようなアルゴリズムであるかを理解することを目標とします。
Alien DPで解ける問題
とする。
が下に凸である。つまり任意のに対してが成立するとする。
もし任意の定数に対してがで計算できるなら
任意のに対してをで計算できる。
よりを高速に計算できる場面がぱっと思いつかないかもしれません。 例えば、長さの配列に対し、そのうち個の要素を使った最適化をするためにとするようなdpをしたいがそのままではで間に合わないときが考えられます。*1
アルゴリズム
を求める操作はのグラフと傾きの直線が接するときの接点を求める操作に対応します。 これは傾きの直線の式をとおいて、との交点をもつようにしながらを最小化していると考えるとよいです。
この接点の座標はに対して単調増加なので、接点がに来るようなの値を二分探索すればよいです。 接点がの右か左かはを少しずらして計算することで判定することが可能です。
注意すべきこと
下の図のようにのグラフと直線の交点は1点とならない場合があります。 そのため二分探索の分岐条件を考えるときは気をつけなければなりません。
更新履歴
2022/05/30 @noshi91さんからのご指摘を受け一部修正しました