给出了一个n * n矩阵。
该行表示学生,相应的列表示在该特定论文中获得的标记。
例如 - >
n=3
1 2 3
4 5 6
7 8 9
然后,第一名学生在第一篇论文中获得1分,在第二篇论文中获得2分,等等。
第二名学生在第一篇论文中获得4分,在第二篇论文中获得5分,等等。
给定 - >每个学生只能获得一篇试题来解决
我们需要最大限度地提高n名学生在上述条件下获得的总分。
对于上述输入,输出 - >>(8 + 6 + 1)= 15。
constraints->
1·; = N< = 100
My approach->
I thought to solve it using dp+bitmask but n can be as large as 100 so had to drop this idea.
答案 0 :(得分:2)
这是典型的weighted bipartite graph问题,可以使用KM algorithm (Hungarian algorithm)解决。
为了构建二分法,我们将所有学生放在一组中,将所有考试试卷放在另一组中。我们将学生与具有价值边缘X
的考试试卷联系起来,其中X
是学生在该考试中可以获得的分数。构建图形后,只需运行KM算法即可得到答案。
这是一个tutorial from top coder,可以很好地解释这类问题,并且还提供了一个代码模板。你可以从这里开始:)