Cómo completar consultas en tiempo O (1) en un problema RANGESUM en SPOJ

Modifiquemos un poco el problema …

Suponga que en lugar de agregar elementos al comienzo de la matriz, los agrega al final. ¿Cómo podrías responder las preguntas? Bueno, si mantiene una matriz de suma de prefijo, puede responder la consulta de suma con Sum [r] – Sum [l-1], y la consulta de actualización agregando el nuevo prefijo a su matriz con Sum [N + 1] = Sum [ N] + elemento, y luego aumentando N para el nuevo tamaño. Ambos te llevan O (1) tiempo.

Entonces, ¿cómo puedes transformar el problema original en este? Bueno, mantenga la matriz invertida :). Entonces, agregar al comienzo de la matriz original es equivalente a agregar al final de la matriz invertida, y la consulta de suma (l, r) en la matriz original es equivalente a hacer una suma (N-r + 1, N-l +1) en la matriz invertida (para ver por qué funciona esto, solo vea que el primer elemento se asigna al elemento Nth, el segundo al N-1th y así sucesivamente).

Espero que ayude!

More Interesting

¿Cuáles son los beneficios del algoritmo de retropropagación frente a la estimación numérica del gradiente?

¿Cuál es la idea central detrás de los algoritmos genéticos?

Cómo establecer un límite máximo y mínimo para una variable entera / flotante en la definición

¿Por qué el introsort se convierte de quicksort a heapsort después de cierta profundidad?

¿Podría dar un algoritmo que calcule la puntuación máxima de la mejor alineación de secuencia (S ', T') de S y T?

Cómo escribir un algoritmo para la suma de n factoriales. es decir, 1! +2! +3! +… (N-1) + n

¿Estoy perdiendo el tiempo implementando la estructura de datos elementales (Stacks, Queues y LinkedLists) como parte de la preparación para una entrevista de prácticas en Google?

¿Cuáles son los mejores algoritmos de clasificación para DBMS?

Staad Pro: ¿Cómo puedo resolver este problema?

¿Cómo se implementa el alogoritmo de Timsort en Java?

¿Cuál es la mejor estrategia para obtener una solución óptima para cualquier problema de codificación solicitado en la entrevista de codificación?

¿Qué algoritmo se puede usar para encontrar la clave para el cifrado y la clave de entrada en el formulario?

Estoy buscando algunas clases que me darían consejos sobre el enfoque. ¿Debo tomar el diseño del sistema, el algoritmo o la preparación de la estructura de datos?

¿Se puede utilizar el aprendizaje automático para encontrar públicos objetivo para anuncios?

¿Cómo funciona un algoritmo de 'aprendizaje de representación'?