Editorial for El Escape Vacuno
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Si la permutación escogida es (digamos que ), entonces el costo es
Se puede observar que es óptimo visitar los positivos en orden creciente, y los negativos en orden decreciente. Es decir, la permutación óptima contiene como subsecuencia a los positivos en orden creciente y también contiene como subsecuencia a los negativos en orden decreciente.
Entonces, tengamos dos arreglos y , que contengan a los positivos en orden creciente y a los negativos en orden decreciente, respectivamente; y por una cuestión de simplicidad, agreguemos el al inicio de ambos. En el ejemplo serían y .
Ahora podemos usar programación dinámica para construir la permutación óptima. Necesitamos saber cuál es el último elemento de escogido, y el último elemento de escogido; además necesitamos saber en qué posición terminamos. Por tanto, podemos usar la siguiente DP.
: costo mínimo de visitar los primeros elementos de , los primeros elementos de , y en el viaje terminamos en la posición
: costo mínimo de visitar los primeros elementos de , los primeros elementos de , y en el viaje terminamos en la posición
Las transiciones son bastante sencillas:
Del estado podemos movernos al estado con costo adicional , y al estado con costo adicional . Del estado podemos movernos al estado con costo adicional , y al estado con costo adicional .
Como casos base podemos poner .
La respuesta sería .
Complejidad: Son estados, y dos posibles transiciones desde cada estado; además ; por tanto, la complejidad temporal es , y en memoria es .
Nota: Se puede obtener memoria lineal, pero no es necesario en este problema.
Comments