Supongo que se refiere a la configuración en la que asigna previamente una gran matriz para almacenar los nodos del árbol de segmentos. Es posible asignar solo 199,999 elementos escalonando las hojas en los dos niveles inferiores, pero esto requiere calcular el rango cubierto por cada nodo a medida que recurre sobre el árbol, lo cual es bastante ineficiente. En cambio, la mayoría de las implementaciones usan una potencia de dos con un elemento ficticio en 0, como sugiere Sudharshan. Como resultado, muchas operaciones se vuelven mucho más simples, ya que los hijos del nodo i son siempre [matemática] 2i [/ matemática] y [matemática] 2i + 1 [/ matemática]. Además, el nodo [math] i ^ {th} [/ math] en el nivel [math] k ^ {th} [/ math] tiene el índice [math] 2 ^ k + i [/ math]. Esto solo desperdicia un factor constante de memoria, que generalmente no tiene importancia en la programación competitiva.
Esto es similar a cómo se implementan típicamente los montones binarios.
- ¿Cómo se puede encontrar la complejidad del tiempo para el recorrido DFS?
- ¿Cuál es el enfoque para resolver el problema # 168 en el Proyecto Euler (por supuesto, no la fuerza bruta)?
- ¿Cuáles son los libros de Ciencias de la Computación (Algoritmo) que recomendará un topcoder?
- ¿Cómo puedes visualizar algoritmos?
- ¿Cuál es el curso / certificación mejor pagado disponible para estructuras de datos y algoritmo?