Strorkisのブログ

信憑性については悪しからず

ABC113D - Number of Amidakuji

問題

AtCoder Beginner Contest 113 - AtCoder

解法

条件を満たす横線の引き方は他の高さの引き方に影響されないため、各高さ毎に、各縦棒にたどり着けるのは何通りかをDPで求めれば良い。

DPの遷移としては、区間ごとに横線があるような引き方が何通りあるのかを事前に求めておけば、縦線毎に隣へ移動する場合を求めることができる。
また、横線があるような引き方が何通りかがわかれば、横線がない引き方が何通りかも全体から引けばわかるので、隣へ移動しない場合も求めることができる。

区間ごとに横線があるような引き方が何通りあるのかは、 1 \leq W \leq 8であることから、bit全探索により O(2^{W})で求めることができる。

計算量はDPと合わせて、 O(2^{W} + HW)である。

コード

Submission #11155114 - AtCoder Beginner Contest 113

感想

解説を見ずに解けると気持ちが良い。