¿Hay un algoritmo rápido para lo siguiente?

Tengo dos matrices ordenadas A y B, cada una de longitud n.

También tengo un conjunto de pares de índices S, donde los índices están entre 1 y n. (Por ejemplo, si n=3, entonces S puede ser (1,2), (2,3) y (1,1)).

Me gustaría un algoritmo muy rápido (preferiblemente O(log n)) tal que encuentre el par (i,j) de S que maximiza A[i] + B[j].

Se puede realizar cualquier preprocesamiento en S (hashing de ciertos valores, etc.).

Cualquier preprocesamiento O(n log n) se puede realizar en A y B (ya que lleva tiempo clasificarlos de todos modos), pero una vez que se realiza el preprocesamiento, las consultas posteriores con varias S preprocesadas deberían ser rápidas.

Gracias por cualquier idea

preguntado el 12 de junio de 12 a las 20:06

1 Respuestas

Esto no se puede hacer en menos de O(n).

If S={(i,n-i+1)|1≤i≤n} no tiene otra solución que probar para cada elemento de S porque para i≠j, Tanto A[i]+B[n-i+1] < A[j]+B[n-j+1] y A[i]+B[n-i+1] ≥ A[j]+B[n-j+1] es posible.

Respondido el 12 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.