H - Moat 解説
by
Mitsubachi
条件の判定方法
この問題では内側にあるとした領域に対応するお堀が存在するか判定する必要があります。問題文の条件 $3$ から $5$ は簡単に満たすことができるようにでき、条件 $2$ は簡単に判定できます。条件 $1$ ですが、これは以下のような点 $(i,j)$ が存在しないことが必要十分条件です。
また、お堀は多角形なので「連結」であることと「穴がない」ことが必要十分です。このうち連結であることはBFSなどを用いて簡単に判定できます。
穴がないことについて、多角形に穴がある場合、多角形の外側にある領域は連結でなくなるので $6 \times 6$ の内部 $4 \times 4$ のエリアに領域があるとし先ほどと同様に外側についても連結であるかを調べることで判定可能です。
また、この問題において、お堀の頂点は格子点上なので、ピックの定理が満たされるかを用いても判定することができます。ピックの定理は以下の通りです。
例えば、
#### #..# #..# ####
なら、 \(a=0,b=14,S=12\) となりピックの定理が成り立ちません。事実、これに穴が開いています。(#を \(1 \times 1\) のマスとしてみなしています)
また、
##.# #### ..## ..##
なら、 \(a=3,b=18,S=11\) となりピックの定理が成り立ちます。事実、これに穴はありません。
投稿日時:
最終更新: