2020年7月13日月曜日

天下一プログラマーコンテスト2014 予選B D - 天下一芸術

設計図上の番号$x$が与えられたとき、$x$を塗るための矩形としては、設計図上のすべての$x$を覆う最小の矩形以外は明らかに考慮する必要がない。また、この矩形に含まれる任意の番号$y (\neq x)$について、$y$は$x$の後に塗らなければならない。このようにして任意の2つの番号の前後関係を調べられるので、あとはそれらをすべて満たすような塗り方があるかどうか調べればよい。

部分点はペンキの順列を${O}(N!)$で全探索すれば取れる。また、違反している制約の数をスコアとして2点スワップの山登りをしたら満点が取れた。


落とせる入力があるかどうか考えてみたけれど思いつかなかった。