AtCoder ARC128 C - Max Dot の双対解
問題概要
整数 と数列 が与えられる.
非負実数列 が と を満たすとき, の最大値を求めよ .
解法
とします.(ただし とします)
を使って問題を言い換えると以下のようになります.
制約
最大化
これは線形計画問題なので双対を取っても最適値は同じです.
制約
最小化
うれしいことに最適化すべき変数が 2 つになりました.
を固定すると の最小値は で出せるので, で三分探索して を最小化すれば計算量は です.
おまけ 三分探索で最適解が出ることの証明
での制約を満たす の最小値を と書くことにします.
ここで は制約を満たすので,任意の を満たす について も制約を満たします.
での の最小値は であるので であり, は凸関数です.
よって も凸関数となるので,三分探索などで最小値が求められます.