Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Regular Contest 131 B 問題 Grid Repainting 4

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

 H W 列マスからなるマスがある. この  HW 個のマスそれぞれに対して, 色  1,2,3,4,5 のいずれかで彩色する. ただし, 上下左右に隣り合うマス同士は同じ色で塗ってはいけない.

いくつかのマスで塗る色が決まっている時, 条件を満たすような彩色を1つ挙げよ.

制約

  •  1 \leq H,W \leq 700
  • 彩色が決まっていないマスが存在する.
  • 可能な彩色が存在する.

解法

制約から, すでに決まっている彩色に矛盾が発生していないので, 以下のようにして条件を満たす彩色を求めることができる.

  • 彩色が決まっていないマス全体の集合を  \mathcal{E} とする.
  •  E \in \mathcal{E} に対して, 以下を実行する.
    •  E の上下左右を見て, 可能な色を見つけ (色の候補は5個で, 隣接するマスは高々4個なので, 必ず可能な色は存在する), その色で塗る.
  • 彩色を出力する.

このような愚直なアルゴリズムで計算量  O(HW) で彩色を見つけることができる.