banner - 横断幕 (Banner) Editorial by Mitsubachi

O(HW)

$O(HW)$ の解法を紹介します。

初めに、条件を満たす長方形の頂点の色を考えます。これは左上右上左下右下の順で $0221$ と $0122$ の $2$ 種類存在します。 (色の入れ替えと回転で一致するものは同一視しています。)
これらを眺めていると、条件を満たす長方形には以下のような頂点 $X$ があることに気づきます。

  • $X$ と $X$ に隣接している $2$ 頂点 $Y,Z$ からなる $3$ 頂点の色はすべて異なる。
また、このような頂点は条件を満たす長方形の中にちょうど $2$ つあること、 $X,Y,Z$ を頂点に含む長方形が条件を満たすこともわかります。

よって、答えは上の条件を満たす \(X,Y,Z\) の数を \(2\) で割った値とあらわすことができます。

これは、あらかじめ各行各列における色 \(0,1,2\) の頂点の数を前準備 \(O(HW)\) で求めることで \(X\) を決め打った際に \(Y,Z\) としてありえるものの数が \(O(1)\) でわかるので \(O(HW)\) で求めることができます。

posted:
last update: