高さを変更する場合を考える。左端から塗っていくことを考えると、新たに塗り直さなければならない回数は最も右側の列の高さから求められるので、以下のようなdpを考えられる。とき、となり、そうでないとき、となる。なってしまうので工夫する必要がある。求めることを考えれば良い。項に注目すると、と変形することができる。0;}遷移式にmax/minが含まれているときは、場合分けすることで式から遷移先の添字を消去することができる場合がある。式に遷移先の添字が含まれていないならば、複数の遷移先で計算結果を共有できる。任意の置換は巡回置換の積に分解できる。n要素の巡回置換は、n-1個の互換の積に分解できる。したがって、ある置換がn-2個の互換で表せる⇔2つ以上の巡回置換の積に分解できる。2個以上の巡回置換の積に分解できるなら明らかにYES。n要素の巡回置換である。n-1個より少ない数の互換の積で表せるはずだからである。いくつの巡回置換に分解できるかはUnion-Find木を用いて求めることができる。0;}コンテスト中は何故か場合分けする発想がなくて解けなかった。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。