Una forma de pensar sobre este problema es pensarlo como un gráfico dirigido, con un borde entre dos latas si una puede hacer explotar la otra. La principal complicación con este gráfico es que puede contener ciclos. La realización crucial para resolver este problema es que si el gráfico contiene un ciclo, contiene un ciclo de longitud 2 (prueba que queda para el lector). Por lo tanto, queremos fusionar (tomar la unión de sus radios de explosión) latas mutuamente accesibles hasta que no podamos fusionar más.
Una forma de hacerlo es dividir y conquistar. Combine las latas en la mitad izquierda de la matriz y la mitad derecha lejos. Para combinar los resultados, tenga en cuenta que solo la lata fusionada más a la derecha en la parte izquierda de la matriz puede alcanzar cualquier cosa en la mitad derecha y viceversa. Por lo tanto, esto lleva tiempo O (N log N).
Ahora el gráfico de accesibilidad es acíclico; Podemos calcular el radio de explosión efectivo final de cada lata combinada utilizando la programación dinámica en el DAG. El radio de explosión efectivo final de una lata es la unión de su radio de explosión y el radio de explosión efectivo final de las latas más lejanas a la izquierda y a la derecha que puede alcanzar.
- Cómo revertir un número promedio de números sin los números
- ¿Cuáles son algunos cuadriláteros que se usan en la vida real?
- ¿Cómo determinan los algoritmos de creación de mercado qué tan agresivamente deberían salir de las posiciones?
- Cómo reducir los componentes fuertemente conectados en nodos únicos de manera eficiente si estoy usando una representación de lista de adyacencia
- ¿Qué es más importante, aprender múltiples lenguajes de programación o practicar algoritmos?