Official

F - Fishing Editorial by kyopro_friends


この問題の原案はキーエンスから提供されました。

魚を捕まえる長さ \(A\) の区間のことを網と呼ぶことにします。

網の左端には魚がいるとしてよいです。(そうでないとき、網の中で最も左にいる魚が網の左端になるように網を右にずらしても、獲ることができる魚は減りません)

魚を獲るタイミングで網の左端にいる魚を \(N\) 通り全探索します。

網の左端を魚 \(i\) にあわせながらで時間を経過させることを考えると、各魚について、網内にいる時刻は区間になります。したがって、魚が網を出入りする回数は高々 \(2N\) 回であり、どの時刻に魚を獲るのが最適であるかはシミュレーションにより \(O(N\log N)\) で求めることができます。

以上より、全体で \(O(N^2\log N)\) でこの問題を解くことができます。

実装例(C++)

posted:
last update: