Algorithm 算法,块堆叠-图论
我正在为我的算法课努力解决这个问题。它在图论部分。我想我应该使用最大加权匹配。但不知道如何构造二部图。有什么建议吗 我们得到n个大小为a1×b1的矩形,安×bn。我们想 用长方形建造最高的塔。在塔中,如果宽度为w的矩形位于宽度为w的矩形的顶部 w' 那么我们需要w≤ w' . 我们可以旋转矩形(即,a×b矩形可以变成a) b×一个矩形)。给出一个O(n)算法,该算法可以找到可能的最高塔的高度。Algorithm 算法,块堆叠-图论,algorithm,Algorithm,我正在为我的算法课努力解决这个问题。它在图论部分。我想我应该使用最大加权匹配。但不知道如何构造二部图。有什么建议吗 我们得到n个大小为a1×b1的矩形,安×bn。我们想 用长方形建造最高的塔。在塔中,如果宽度为w的矩形位于宽度为w的矩形的顶部 w' 那么我们需要w≤ w' . 我们可以旋转矩形(即,a×b矩形可以变成a) b×一个矩形)。给出一个O(n)算法,该算法可以找到可能的最高塔的高度。 (例如,如果输入为11×11、8×2、1×10,那么解决方案是高度为29=11+8+10的塔。)如果我
(例如,如果输入为11×11、8×2、1×10,那么解决方案是高度为29=11+8+10的塔。)如果我正确理解了问题,您可以通过求和
Math.max(ai,bi)
始终找到可能最高的塔的高度。因为你不需要建造这座塔,它只需要O(n)
。否则,您需要O(nlogn)
(按矩形高度排序)。如果您有两个块(一个叠在另一个上)的约束条件,即顶部块的宽度为