AtCoder Beginner Contest E Mex-Min
はじめに
アウトプットと、自分の理解のために、自分の理解についてまとめています。
問題
方針
配列によるMexの管理
最初のMexは、先頭の要素からM個の要素を見ることで求められる。
Mexの求め方は、配列 を用意して、M個の要素の出現回数をカウントする。そして、配列のindexを0から見たときに1度もカウントされていない値( となる )がMexになる。
次に、最初のMexと次のMexの違いについて考える。
最初のMexは、
次のMexは、
一般化して考えると、Mexを求めるためのからの整数列は、 がなくなって、 が追加される。
配列 の変化について考えると、 されて、 というように更新される。
このとき、Mexがどう変化するかについて考えると、Mexに成りうる値は、 された である。(から一番最初に現れる となる がMexとなるので、 となれば、その値がMexとなりうる。)
ただし、 が実際にMexであるかどうかについては考えていなさそう。(求めたい答えは個々のMexの最小値なので、Mexと成りうる最小値のものだけ考えれば良さそう。)
数列を横にずらして更新しながら答えを求めることができる。