ユニークビジョンプログラミングコンテスト2022 冬 (AtCoder Beginner Contest 283) E - Don't Isolate Elements (500)
$ dp[i][j] で$ i行目を反転しない時/する時の条件を満たす最小回数とする
各行でその行までは条件を満たしているようにする
各行でその行を反転するかどうか、その前の行を反転したかどうかの4パターンを試す
それぞれでは各マスで4つの隣接する要素について値が同じかを確かめる
この時に各行を反転しているかどうかを考慮してチェックする
ただし下方向は変わる可能性があるので調べない
条件を満たしていた場合、前行の結果に今の行を反転したかどうかで操作回数を追加して最小値を考える