問題はこちら
問題概要
長さ解説
愚直に実装すると各毎に
が最小になるような
を求めます.もちろんこのままだと
毎に
かかるのでダメですが
をソートすることで以下の性質をもつようになります.
- 任意の
に対して
が最小になる
を
,
が最小になる
を
とすると
が成り立つ.
これはが凸関数であることから簡単に分かります.
この性質が成り立つ場合に各について最小値を取る
を
で求められるアルゴリズムとしてMonotone Minimaというものがあります.それを用いると全体で
で求められます.
上記の性質はMonotoneといいますが,もう少し条件を強めた性質「の任意の部分集合についてもMonotoneである」が成り立つのでSMAWKアルゴリズムが使えます.これを用いると各
について最小値を取る
を
で求められます.どちらにせよソートがネックになるので全体で
かかります.
提出プログラム
https://atcoder.jp/contests/abc212/submissions/27798629 Monotone Minimahttps://atcoder.jp/contests/abc212/submissions/27797928 SMAWKアルゴリズム