AtCoder Beginner Contest 272 E問題 Add and Mex
B# 問題 atcoder.jp
提出解答
問題の概要
長さ の整数列 がある. 次の操作を 回行う.
- の第 項に を加算する.
各操作後において, に含まれない最小の非負整数を求めよ.
制約
解法
一般的に, 以下が成り立つ.
長さが の整数列 において, に含まれない最小の非負整数は 以上 以下である.
よって, 各操作の各項において, 以上 未満でない場合, その項は考慮する必要はないことがわかる.
第 項目において, 回目の操作後は になる. これが 以上 以下 (未満でも良いが, 議論を楽にするために以下とする) になるためには
となる.
このような整数 の個数は高々 個である. よって, 以上 以下になるような操作回数と項の組の総和は
であるが, 調和級数によって, であることがわかる.
よって, であるから, 以上 以下になるような操作回数の場合に着目すればよい.
各操作回数ごとに登場した整数を集合で管理することによって, 各操作回数における に含まれない最小の非負整数を全体で 時間で求めることが出来る.