Algorithm 排列数组中的行以消除增加的子序列

Algorithm 排列数组中的行以消除增加的子序列,algorithm,dynamic-programming,greedy,divide-and-conquer,Algorithm,Dynamic Programming,Greedy,Divide And Conquer,以下问题取自(问题653): 给你一个nx2的数字矩阵。查找一个O(n logn)算法,该算法排列数组中的行,使数组中的任何列都不包含比⌈√N⌉ 我不知道如何解决这个问题。我想它可能会使用某种分而治之的循环,但我似乎找不到 有人知道如何解决这个问题吗?这是我的解决方案 1) 根据第一个元素从大到小对行进行排序 1 6 5 1 3 3 -\ 3 3 2 4 -/ 2 4 5 1 1 6 2) 把它分成几组⌈√N⌉, 剩下的是什么⌈√N⌉ 小组) 3) 根据第二个元素从大到小对每组中的

以下问题取自(问题653):

给你一个nx2的数字矩阵。查找一个O(n logn)算法,该算法排列数组中的行,使数组中的任何列都不包含比⌈√N⌉

我不知道如何解决这个问题。我想它可能会使用某种分而治之的循环,但我似乎找不到

有人知道如何解决这个问题吗?

这是我的解决方案

1) 根据第一个元素从大到小对行进行排序

1 6    5 1
3 3 -\ 3 3
2 4 -/ 2 4
5 1    1 6
2) 把它分成几组⌈√N⌉, 剩下的是什么⌈√N⌉ 小组)

3) 根据第二个元素从大到小对每组中的行进行排序

5 1    3 3
3 3    5 1
    -> 
2 4    1 6
1 6    2 4
正确性证明:


列1中增加的子序列只能在单个组中发生(大小比n的平方根长?这是《算法问题》一书中的653个问题。这里有一个到该书pdf的链接:我认为它的分而治之我怀疑合并步骤也涉及一些数学。啊,这么简单。为什么我没看到?干得好。大约5分钟。我开始思考如何解决1xn问题(单列)。铅笔和纸总是有用的。
5 1    3 3
3 3    5 1
    -> 
2 4    1 6
1 6    2 4