Official

E - Apple Baskets on Circle Editorial by kyopro_friends


この問題は二分探索を用いて \(O(N\log K)\) で解くことができます。

高橋君がちょうど \(mN\) 回の行動を起こすことを「\(m\) 周する」と呼ぶことにします。
\(m\) を決めたとき、\(m\) 周した直後の時点で、高橋君が何個りんごを食べており、各かごの中に何個りんごが残っているかは、\(O(N)\) 時間で容易に求めることができます。
したがって、「\(m\) 周したときに食べるりんごの個数は \(K\) 個以下か?」という条件で \(m\) について二分探索することで、\(K\) 個のりんごを食べるまで高橋君が何周するかを \(O(N\log K)\) で求めることができます。端数は愚直シミュレーションで \(O(N)\) 時間となるので、全体で \(O(N\log K)\) 時間でこの問題を解くことができます。

実装例(C)

bonus: \(O(N\log N)\) で解いてみましょう

posted:
last update: