[yukicoder] No.161 制限ジャンケン

スポンサーリンク

概要

問題文 →
公式解説 →

問題に対して大げさな手法を持ち出しすぎなのはそれはそうなのですが、これが見えるようになったことに成長を感じます。

解法

最小費用流問題に帰着できます。

・source S から貼る辺:自分の出す手の回数に応じて、$G$, $C$, $P$ の容量の辺を貼る。コストは $0$。
・sink T へ貼る辺:相手の出す手の回数に応じた容量の辺を貼る。コストは $0$。

・中央の辺:容量は $\infty$、コストは勝てる手のときは $0$、負ける手のときは $3$、あいこの手のときは $2$ とします。

この時点で、流量 $G+C+P$ のフローを流すと、それはパスの和で書けて、 $G+C+P$ 回の勝負をフローとして表せます。 実際のゲームスコアを $3$ から引いた値をコストとしています。したがって、コスト最小化と問題文のポイント最大化が同値になるので、最小費用流によりポイントが最大化できます。

タイトルとURLをコピーしました