Cómo resolver la consulta de suma de potencia de rango usando treap

No estoy en SPOJ, no veo este problema antes, a continuación solo estoy adivinando al leer la declaración del problema.

El punto # 4 en cuestión, la consulta lrk indirectamente requiere una suma de L a R. Eso se puede hacer por hecho conocido estándar de suma [1 a R] menos suma [1 a L-1] o similar.

Lo anterior requiere la suma del prefijo de valores grandes de una gran cantidad de nodos. Por lo tanto, es mejor tener algunas sumas almacenadas en varios nodos. Pero nuevamente tiene operaciones de eliminación e inserción en la pregunta, por lo que realmente dudo si Treap es un buen DS basado en operaciones que admite, que eché un vistazo rápido: Treap, solo son insertar, eliminar, buscar, dividir, fusionar /Unión.

Si es posible, mire el árbol Fenwick o el árbol de segmentos

  1. Para el árbol Fenwick, como recuerdo, la actualización se puede usar para insertar, no recuerdo que hubo una eliminación, puede hacer lo mismo o hacer un poco de trabajo inteligente.
    1. La estructura de nodos para Fenwick es simplemente almacenar la suma que tiene, en cada nodo. Pero esta pregunta parece ser un poco inteligente al incluir el valor i en la suma. Pero si piensas lo suficiente, encontrarás una solución.
  2. Para el árbol de segmentos, aquí nuevamente, no recuerdo la operación de eliminación, especialmente la wikipedia dice “Es, en principio, una estructura estática; es decir, su estructura no se puede modificar una vez que está construida ”, por lo que una operación de eliminación nuevamente necesitará un poco de trabajo inteligente.

Fenwick se ve un poco mejor, pero Sumod Mathilakath dice que el árbol de segmentos, prueba y ve qué se ajusta correctamente

Si todo lo demás falla, lo que parece poco probable, tome una pista del tipo Top 30 en SPOJ, que es un amigo mío. Para esto, hágame ping en los comentarios, después de intentarlo lo suficiente.

la mejor de las suertes.

Puedes usar el árbol de segmentos.

Consulte: Árbol de segmentos | Conjunto 1 (Suma del rango dado) – GeeksforGeeks

More Interesting

¿Cómo afectan los nuevos algoritmos de Instagram a la búsqueda de hashtag?

Cómo obtener el valor más cercano al número al agregar elementos de matriz

¿Qué es un árbol binario?

Programación de computadoras: Como ingeniero de software, ¿qué cosas crees que son "innecesariamente complicadas"?

¿Puede un gráfico tener bordes dirigidos y no dirigidos?

¿Cuándo Quicksort tiene su peor complejidad de tiempo de caso?

Si hago algunos cálculos iterando sobre el bucle mientras tomo las entradas. A partir de entonces, imprimiendo el resultado. ¿Puedo decir que es O (1) complejidad?

¿Cuáles son los 5 mejores algoritmos con los que debería estar familiarizado para tener éxito en una entrevista de desarrollador junior?

¿Cómo idearé un algoritmo eficiente para determinar todos los cursos que debo tomar antes de un curso en particular sin un orden topológico?

En el software de servidor web, ¿alguna vez se prefiere la ordenación en lugar de la clasificación rápida, porque un ataque DoS podría desencadenar el comportamiento de clasificación rápida en el peor de los casos?

¿Cuáles son las mejores visualizaciones de algoritmos de aprendizaje automático?

¿Cuál fue el algoritmo utilizado por AlphaGo para ganar el juego de Go contra el campeón europeo de Go humano?

¿Existe un algoritmo existente para la siguiente pregunta? Si no, ¿cuál es la respuesta?

¿Qué algoritmos debo saber para desarrollar una aplicación web sin conexión primero?

¿Cuáles son los mejores algoritmos actuales de visión por computadora que pueden aprender a reconocer un objeto (digamos una flor) a partir de una sola imagen?