Algorithm 寻找最大排序子序列

Algorithm 寻找最大排序子序列,algorithm,sorting,Algorithm,Sorting,假设我们得到一组整数对S={(x_1,y_1),…,(x_n,y_n)}。计算S中具有以下性质的元素的最大序列(a_1,b_1),…,(a_m,b_m)的最有效方法是什么 a_i是的,可以这样做O(n logn) 让我们按字典顺序对集合中的元素进行排序。第一批组件现在已正确订购,因此我们可以忽略它们 让我们看看这个排序序列的任何排序子序列。第二个元素形成一个递增的子序列。这就是为什么我们可以在排序序列中为每对元素的第二个元素找到最长的递增子序列(完全忽略第一个元素,因为它们已经正确排序)。数字数

假设我们得到一组整数对S={(x_1,y_1),…,(x_n,y_n)}。计算S中具有以下性质的元素的最大序列(a_1,b_1),…,(a_m,b_m)的最有效方法是什么


a_i是的,可以这样做
O(n logn)

  • 让我们按字典顺序对集合中的元素进行排序。第一批组件现在已正确订购,因此我们可以忽略它们

  • 让我们看看这个排序序列的任何排序子序列。第二个元素形成一个递增的子序列。这就是为什么我们可以在排序序列中为每对元素的第二个元素找到最长的递增子序列(完全忽略第一个元素,因为它们已经正确排序)。数字数组的最长递增子序列可以在
    O(n logn)
    time中找到(这是一个众所周知的问题)


  • 是的,可以这样做
    O(n log n)

  • 让我们按字典顺序对集合中的元素进行排序。第一批组件现在已正确订购,因此我们可以忽略它们

  • 让我们看看这个排序序列的任何排序子序列。第二个元素形成一个递增的子序列。这就是为什么我们可以在排序序列中为每对元素的第二个元素找到最长的递增子序列(完全忽略第一个元素,因为它们已经正确排序)。数字数组的最长递增子序列可以在
    O(n logn)
    time中找到(这是一个众所周知的问题)


  • 允许我们对原始集合中的元素重新排序吗?允许我们对原始集合中的元素重新排序吗?据我所知,您只需要从集合中选择可以形成最大序列的元素,当您找到最长的递增子序列时,您会受到现有排序的限制。我的意思是,我假设您可以自由地重新排列元素以获得递增的子序列,例如,删除分隔两个递增子序列的元素。我假设,基于这样一个事实,即存在一组初始元素,问题要求从中形成一个序列,因此排序在任何一点上都不相关,而是在最终序列中。@Computator7是,根据我的理解,元素可以被重新排序。因此,如果你按照字典顺序排序,那么在步骤1中,第一个组件上相等的元素将根据第二个组件进行排序。那么我想在第二步。您可以删除任何在O(n)时间内d_i