我在准备考试,我被这个问题困住了:
我们有N支球队互相比赛两次。每场比赛都没有平局。获胜最多的队被宣布为赢家(可以是多个)。设计一个算法,给出一组游戏的初始结果,检查某个团队是否还有机会成为本次锦标赛的赢家。
我不知道怎么接近。这个问题被归类为“流量和匹配”,但我不知道这可能是一个最大的流量问题。
最佳答案
假设我们希望A队获胜。
很明显,如果A赢得了所有的比赛,这是最好的,所以这给了我们一个目标得分。我们现在可以计算出一支球队为了赢得总冠军而必须遭受的损失。
问题是,在剩下的每一场比赛中,我们最多只能得到一个失败者。因此,我们需要研究如何将团队与游戏进行匹配,其中每一场比赛都对应于特定团队在特定游戏中的失败。
这在团队和游戏之间的二部图上基本上是匹配的,但是我们也可以通过额外的源和汇聚节点以最大流来解决它。
为每个团队创建一个源节点,其容量等于该团队必须承受的损失数。
从每一个队到每一个涉及该队的剩余比赛取得优势(无限能力)
从每一个剩余的游戏到接收器节点创建一个边,其容量等于该游戏要玩的次数。(即,如果仍要玩B和C游戏,则容量为2)
然后,如果您可以构建一个有效的流,从源到汇达到容量(在每个源到团队的边缘),那么您已经证明了团队A仍然有可能获胜。