banner - 横断幕 (Banner) Editorial by Mitsubachi

O(H^2W)

$O(H^2W)$ の解法を紹介します。

上から $p$ 番目と $q$ 番目にある頂点を使うとします。
このとき、左から $r$ 番目にある頂点を使うとした際、 $2$ 頂点の位置が確定し、それらが含む色の種類が分かります。これは高々 $6$ 通りなので、 $1 \leq r \leq W$ を満たす $r$ について $(p,r)$ と $(q,r)$ の色の種類を求め、ある色の集合について $(p,r)$ と $(q,r)$ の色の集合がそれに一致するような $r$ の数を前準備 $O(W)$ で用意しておけば、 $p,q$ を決め打った際の答えへの寄与は $O(1)$ で求まります。
前準備の際、色 $0,1,2$ を色 $2^0,2^1,2^2$ と解釈し、論理和などを利用すると簡潔に実装できるでしょう。

よって、 \(p,q\) を決め打った際の寄与は \(O(W)\) でわかり、 \(p,q\) としてありえるのは \(O(H^2)\) 通りなので、 \(O(H^2W)\) で求めることができます。

posted:
last update: