ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

AOJ 3058 - Ghost (RUPC2019 Day2 H)

問題
提出コード

解法

燃やす埋める問題です。
詳しくはこちらを。
始点と終点s,tおよび各幽霊に対応する作り、sから各幽霊、各幽霊からtに辺をはります。
この際、sから出てくる辺を左に向くパターン、tへ向かう辺を右に向くパターンとすると、
i番目の幽霊が向いている向きが

  • 右のとき
    sから出てくる辺は容量A_{i}tへ向かう辺は容量0

  • 左のとき
    sから出てくる辺は容量0tへ向かう辺は容量A_{i}

となるように辺をはればよいです。
そして、i番目とj番目の幽霊が向かい合っているときにBの恐怖度が発生するとしたとき(i \lt jとします)、
iからjに容量Bの辺をはると、うまく条件を表現することができます。
あとは、フローを流していき、最小カットを求めれば答えとなります。

感想

問題を見た時点で燃やす埋める問題だ!となったので、成長を感じます。
こういう気づけばあとはコピペで終わるような問題をさらっと解けるようになると気持ちいいですね。