题目大意
(mathcal{Alice}) 和 (mathcal{Bob}) 玩"摇滚((Rock)),剪纸((Paper)),剪刀((Scissors))",现在给出两人每种出发的总数,求 (mathcal{Alice}) 最少和最多的获胜局数.
分析
网络流建图入门题.
萌新刚学网络流,所以还是一点都不会/kk
先考虑求可以获胜的最大值,那么显然是 (mathcal{Alice}) 的 (Rock) 与 (mathcal{Bob}) 的 (Scissors) 相遇是最好的,(mathcal{Alice}) 的 (Paper) 与 (mathcal{Bob}) 的 (Rock) 相遇是最好的,(mathcal{Alice}) 的 (Scissors) 与 (mathcal{Bob}) 的 (Paper) 相遇是最好的,所以可以简单理解后建出以下图:
源点是 (mathcal{Alice}),汇点是 (mathcal{Bob}),对于 (mathcal{Alice}) 可以连出三个点,分别表示 (Rock,Paper,Scissors),边的流量自然是该种可以出的数量,对于 (mathcal{Bob}) 同理.因为需要迎,所以在 (mathcal{Alice}) 可以赢 (mathcal{Bob}) 的出法间链上流量为 (infty) 的边,答案就是该图的最大流.
会最大值的做法后自然也可以简单分析出最小值的图:
区别与刚才的是,刚才要在 (mathcal{Alice}) 获胜的出法之间连边,现在要在 (mathcal{Alice}) 不获胜的出法之间连边,答案就是 (n-) 改图的最大流.
代码
代码挺好写的