1.两个降序排列的数组A[1...n],B[1....m],现在求其中任意的a属于A,b属于B的和的第k个最大值是多少?
比如:A[]={9,6,3,2,1} B={8,3,1},第3个最大的和。最大和的排序为:17,14,12,11,10...,因此第3个为12.
水木的原帖为:http://www.newsmth.net/bbstcon.php?board=Algorithm&gid=40581
具体的方法是采用矩阵的方法:
为了简单,先假定M=N
考虑矩阵A(N*N)ai+bj形式。(不需要计算)
对角线上的元素 ci= ai+bi,很显然
计算 i,st. i^2<=k<(i+1)^2
在 第i+1行 A(i+1,0)到A(i+1,i+1)
和第(i+1)列 A(0,i+1)刀A(i+1,i+1)
这两个分别有序数列中寻找第 k-(i^2)个数(用归并),该数就是所谓的第kth个数。