AGC024 B - Backfront
問題
まず、最悪手でソートすることができます。これは、から順番に、一番左側に移動していけばよいです。
ということで、さらに効率的な方法を探ります。
今回の操作では、両端に数字を移動させることはできますが、逆に真ん中に数字を挿入することはできません。
ということで、操作しない数字を個と決めた場合に、その個の数字だけを取り出して元の順番のまま並べると、となっている必要があります。
逆に、この条件を満たす数字個が存在する場合、手で昇順にソートすることができます。
の順番で数字を左側の先頭に、の順番で数字を右側の最後尾にもっていくことによって条件を満たすことができます。
ということで、最終的に求めたいのは、と並んでいる(連続しているとは限らない)部分列の最長の長さです。
これは、となっている数列について、の先頭から見ていき、となっている区間の最長の部分を探せばよく、これはで調べることができます。
あとは、最長の長さを求め、を計算すれば答えとなります。
感想
AGCの500点にしては…?と思う問題でした。それぐらいすんなり解けたので、実力が伸びているみたいで(と思いたいです)うれしいです。