Space Coconut Crab 解説

アルゴリズムの概略

与えられた e に対して,x + y2 + z3 = e を満たすような x, y, z の組み合わせのうち, m = x + y + z を最小にするような m を出力せよ,という問題。 ここで e ≦ 1,000,000 です。

変数 x, y, z に対してそれぞれループを回して全探索すると計算量が最悪 1,000,000×1,000×100 = 100G になって解けません。 しかし,y, z を定めると x は x = e - y2 - z3 でループを回さず求めることができるので, 変数 y, z に対してそれぞれループを回すだけでよく,その時計算量は 1,000×100 = 100K になって解けるようになります。

別解

変数 z のみに対してループを回し,残りの値 r = e - z3 の2次方程式 r = x + y2 を解析的に解く方法があります。 詳細はOB/OGの会の解説を参照してください。

$Id: index.shtml 1576 2007-06-25 15:10:28Z SYSTEM $