ARC050 B問題:花束
問題. 花束
個の赤い花と 個の青い花がある. 個の赤い花と1個の青い花からなる花束と,1個の赤い花と 個の青い花からなる花束の2種類の作り方がある.作ることのできる花束の個数の最大値を答えよ.
制約: ,
解法.二分探索
1種類目の花束の個数を ,2種類目の花束の個数を とおくと次のようのな整数計画問題となる.
s.t.
ただし, は整数変数である.ここで,目的関数値 が 以上となるような が存在するかを考える.すなわち,次の条件を満たす解が存在するかを考える.
条件1.
条件2.
条件3.
条件4. ( は整数)
条件2の両辺に を足して条件1を用いて整理すると, となる.同様に条件3に対して整理すると となる.この条件を書き直すと次のようになる.
条件1'.
条件2'.
条件3'.
条件4'. ( は整数)
条件2'と条件3'は と に対して独立な式である.また,条件1'を満たすためには はできるだけ大きな値を取るほうが良い.また,条件4'より は整数であることから,
,
となる.これは条件2', 3', 4' を満たすので後は条件1'を満たすかどうかを判定すればよい.したがって, を固定すると定数時間で判定でき,条件を満たすかどうかは に関してある値で二分されるので二分探索で答えを求めることができる.
計算時間:
上の条件式の同値変形を直感的に解釈すると 解説 のようになるけど,正しさは数式を上の様に変形したほうが分かりやすいと思う.
上の定式化の幾何的解釈を考えると面白いけど図とかを書くの大変なので書きたくなーい.