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