Official

C - Square Corner Packing Editorial by snuke


考察

塗られないマスの個数を最小化する問題に言い換えます。

ある行に注目すると、\(1\) 回の操作で塗られるマスは \(0\) 個か \(2\) 個です。 つまり、\(W\) が奇数の時、どの行も必ず \(1\) マスは塗られないマスが生じます。

列についても同様です。

解法

\(H,W\) の偶奇で場合分けを行います。

[1] \(H,W\) = 偶,偶

\(2 \times 2\) の正方形を敷き詰めるように塗ることで、全てのマスを塗ることができます。

[2] \(H,W\) = 偶,奇(奇,偶 も同様)

必ず \(H\) 個以上の塗られないマスが生じます。偶,偶と同様の塗り方をすることで、塗られないマスを \(H\) 個にすることができます。

[3] \(H,W\) = 奇,奇

\(H=W\) の場合

塗られないマスは \(H\) 個以上です。 また、塗られるマスの個数は \(4\) の倍数なので、塗られないマスの個数が \(H+3\) 個以下である塗り方を構成できれば最適です。

\(H=1,3\) の場合は自明です。 \(5 \le H\) の場合は、以下のような塗り方をすることで \(H\)\(4\) 小さい問題に帰着できます。

maabbcc.m
.aabbccdd
ll?????dd
ll?????ee
kk?????ee
kk?????ff
jj?????ff
jjiihhgg.
m.iihhggm

\(H<W\) の場合(\(H>W\) の場合も同様)

右端 \(2\) 列を \(2 \times 2\) の正方形を敷き詰めるように塗ることで、\(W\)\(2\) 小さい問題に帰着できます。

サンプル

\(H,W = 4,6\)

aabbcc
aabbcc
ddeeff
ddeeff

\(H,W = 5,6\)

aabbcc
aabbcc
ddeeff
ddeeff
......

\(H,W = 9,11\)

maabbcc.mww
.aabbccddww
llrnn.rddxx
ll.nnooeexx
kkqq.ooeeyy
kkqqpp.ffyy
jjr.pprffzz
jjiihhgg.zz
m.iihhggm..

\(H,W = 9,7\)

iaabb.i
.aabbcc
hhj.jcc
hh...dd
ggj.jdd
ggffee.
i.ffeei
xxyyzz.
xxyyzz.

posted:
last update: