Codeforces 1391D 505
問題
https://codeforces.com/problemset/problem/1391/D
行列の01行列において、全ての部分偶数長正方行列に含まれる1の数を奇数にするための最小操作回数を求めよ。
解法
とする(そうでない場合はを転置)。
の場合、部分偶数長正方行列は存在しないため。
の場合、の偶奇を決めてしまえば後の列の偶奇は自然に定まるため、2通り試す。
偶奇の状態は、00 or 11、01 or 11であり、どの調整も1回の操作で済む。
の場合、との偶奇を決めてしまえば後の列の偶奇は自然に定まるため、4通り試す。
偶奇の状態は、000 or 111、001 or 110、010 or 101、011 or 100であり、どの調整も1回の操作で済む。
の場合、の正方行列が必ず含まれ、それに含まれる4つのの正方行列とそれ自身は同時に条件を満たすことができないので。
コード
https://codeforces.com/contest/1391/submission/89863543
一言
自力ACではないが、久しぶりに書いてみたくなったので書いた。