7

我在这里要问的问题在堆栈溢出之前已经被问过了。但我无法正确理解Skiminok发布的解决方案。

这是链接。

我用给定的两个示例测试用例尝试了上面链接上发布的解决方案,但我无法得到正确的答案。

对于测试用例 1::

N=3 和 K=2

5 4 7

DAG 将是:

样本测试用例 1 的有向无环图

注意:我已经构建了上述 DAG 考虑:

设 pi 和 pj 是两个不同的问题。然后我们将画一条从 pi 到 pj 的有向边当且仅当 pj 可以在同一天连续地在 pi 之后直接求解。即,必须满足以下条件:

i < j,因为你应该更早地解决不太困难的问题。

|vi - vj| >= K(评级要求)。

然后我构建了二分图,考虑:

对于原始 DAG 的每条有向边 (u, v),应该在二分图中添加一条无向边 (au, bv),其中 {ai} 和 {bi} 是大小为 n 的两个部分。

在此处输入图像描述

答案 = 上面二分图中的最大基数匹配。

上述二部图中的最大基数匹配 =1(绿色 egde)

但答案是2。

同样的示例测试用例 2:

5 1

5 3 4 5 6

在此处输入图像描述

在此处输入图像描述

上图中的最大基数是 MORE THAN ONE,但正确答案是 1。

我认为我没有正确实施它,请你告诉我在哪里犯了错误或者是否有任何其他方法

谢谢!

4

1 回答 1

1

我自己找到了答案,第二天我发布了这个问题。

我的解决方案通过了所有测试用例。

我在最后一步犯了错误。实际上答案/解决方案是 SET B 中不包含最大二分匹配边缘的顶点总数。

例如示例测试用例 1::

最大匹配 M={(1A,3B)}。

最大匹配的边没有发生在两个顶点(顶点 1 和顶点 2)上。所以答案等于这样的顶点数 = 2

对于测试用例 2::

最大匹配 M={(1A,2B),(2A,3B),(3A,4B),(4A,5B)}。

没有最大匹配的边发生在一个顶点(顶点 1)上。所以答案等于 1

于 2012-05-30T17:43:08.460 回答