転倒箇所を入れ替えることで、いわば以下のような状態になる。3またぎループをまたいで発生する転倒回数は、「自分より右側のループで、自分より小さな数字の個数」である。して、あらかじめ全ループ分を合計しておく。1ループに出てくる各数字の個数を数え、数字が小さい方から処理する。用意し、0で初期化する。加算するとすると、同じ数字をまとめて計算できる。ある状態から遷移できる状態が限られるので、考える状態数は実質1通り。個のマスを、先頭から順番に見る。各マスに対して考え得る操作は、以下の2つである。値およびそのマスを開くか閉じるかで、最終的にそのマスが何回反転されるかがわかるため、最終的な色も判定できる。「最終的にそのマスが白になる」ことを保証しながら遷移を考える。結果的には以下のようになる。DP[i-1][k]$$S_i=$白の場合も似たような遷移となる。