假设有两个数组:
a[] = a_1, a_2, ..., a_n
b[] = b_1, b_2, ..., b_m
并且有一组s
包含(a_i, b_j)
对,在此集合中,我们需要找到没有两对(a_i, b_j)
和(a_i', b_j')
的最大对数满足i'<i && j'<j
。
因此,在(a_2, b_1)
和(a_3, b_2)
,(a_1, b_2)
和(a_2, b_1)
合适时,不允许同时选择(a_1, b_2)
,(a_3, b_2)
。
例如,该集合为{(a_1, b_1), (a_1, b_2), (a_2, b_1), (a_3, b_2)}
我们需要选择(a_1, b_1), (a_1, b_2), (a_2, b_1)
来选择3对。
似乎需要构建一个dp算法,对吧?你有什么暗示吗?感谢
答案 0 :(得分:0)
我认为这个问题可以减少到longest increasing subsequence,方法是将a_i排序为i,将b_j排序为j增加(等于i)。这将给出复杂度为O(NlogN)的解决方案,其中N是集合中的条目数。
示例:{(a_1, b_1), (a_1, b_2), (a_2, b_1), (a_3, b_2)}
有序:{(a_3, b_2), (a_2, b_1), (a_1, b_1), (a_1, b_2)}
j:{b_1, b_1, b_2}
的最长增加子序列,索引{1, 2, 3}
的条目
解决方案:{(a_2, b_1), (a_1, b_1), (a_1, b_2)}