ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

AGC032 A - Limited Insertion

問題
提出コード

解法

操作を逆順で見ていき、数字を取り除いていくことを考えます。今現在の数列をpで表すと、i = p_{i}となった場合にi番目の数字を取り除くことができます。
この操作を行った場合、i+1番目以降の数字は順番が一つ前になります。
ですが、i番目より手前の数字には、何も影響がありません。
加えて、p_{i}を後ろに送る操作は存在しないので、i=p_{i}となっている要素のうち一番後ろにあるものについて、取り除く操作を常に行っていけばよいことになります。
最終的に空になった場合に、その操作を逆順で見れば、答えとなります。

感想

前回のA問題で痛い目を見たので覚悟をしていましたが、今回は無事はやときすることができました。
後ろから行うことができるという点に気づくことができればこの問題の本質がつかめる…と思います。