作为本赛季末最成功的足球BE队的球迷,我常常想知道我最喜欢的球队是否仍然有理论上的机会成为冠军。您在这项挑战中的任务是为我回答这个问题。
输入值
您将收到三个输入:当前表,剩余比赛列表以及我们感兴趣的球队的当前位置。
输入1:在当前表,数字的顺序是该我个号是由团队获得的点我为止。例如,输入
[93, 86, 78, 76, 75]
对下表进行编码(仅最后一列很重要):
输入2:剩余比赛,一组元组,其中每个元组(i,j)代表第i队和第j队之间的剩余比赛。在上面的示例中,第二个输入[(1,2), (4,3), (2,3), (3,2), (1,2)]
表示其余匹配为:
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
输入3:我们感兴趣的球队的当前职位。例如,2
上面示例的输入表示我们想知道热刺是否仍然可以成为冠军。
输出量
对于形式(i,j)的每个剩余匹配项,有三种可能的结果:
- I队获胜:I队获得3分,J队获得0分
- J队获胜:I队获得0分,J队获得3分
- 平局:i队和j队均获得1分
如果所有剩余比赛都有结果,则必须输出一个真实值,以使最后没有其他球队的得分超过第3输入中指定的球队。否则,输出一个伪造的值。
示例:考虑来自以上部分的示例性输入:
输入1 = [93, 86, 78, 76, 75]
,输入2 = [(1,2), (4,3), (2,3), (3,2), (1,2)]
,输入3 =2
如果团队2
赢得了其所有剩余比赛(即(1,2), (2,3), (3,2), (1,2)
),则将获得4 * 3 = 12的额外积分;这些比赛没有其他球队得到任何积分。假设其他剩余比赛(即(4,3)
)是平局。那么最终分数将是:
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
这意味着我们已经为剩下的比赛找到了一些结果,因此没有其他团队比团队有更多的积分2
,因此此输入的输出必须是真实的。
细节
- 您可以假定第一个输入为有序序列,即对于i < j,第i个条目等于或大于第j个条目。可以将第一输入作为列表,字符串等。
- 您可以将第二个输入作为字符串,元组列表等。或者,您可以将其视为一个二维数组
a
,其中a[i][j]
是(i,j)
剩余匹配项列表中表单的条目数。例如,a[1][2] = 2, a[2][3] = 1, a[3][2] = 1, a[4][3] = 1
对应于[(1,2), (4,3), (2,3), (3,2), (1,2)]
。 - 对于第二个和第三个输入,您可以假设0索引而不是1索引。
- 您可以按任意顺序输入这三个输入。
请指定您在答案中选择的确切输入格式。
旁节点:在“ 三分规则下,足球淘汰难以决定 ”中,证明这一挑战的根本问题是NP完全的。有趣的是,如果只赢得2分,那么该问题在多项式时间内可以解决。
测试用例
所有的测试用例的格式为Input1
,Input2
,Input3
。
真相:
[93, 86, 78, 76, 75]
,[(1,2), (4,3), (2,3), (3,2), (1,2)]
,2
[50]
,[]
,1
[10, 10, 10]
,[]
,3
[15, 10, 8]
,[(2,3), (1,3), (1,3), (3,1), (2,1)]
,2
虚假:
[10, 9, 8]
,[]
,2
[10, 9, 9]
,[(2,3), (3,2)]
,1
[21, 12, 11]
,[(2,1), (1,2), (2,3), (1,3), (1,3), (3,1), (3,1)]
,2
优胜者
这是代码高尔夫球,因此最短的正确答案(以字节为单位)获胜。在第一个正确答案发布后的一周内,将选择获奖者。