Editorial for Conjuntos Múltiples
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtarea 1:
Se puede mantener y en vectores, y en cada query, recorrer pares de elementos y quedarse con el mejor valor como se indica en el texto del problema.
Complejidad
Subtarea 2:
Se puede hacer como en la subtarea 1, pero usando un multiset para soportar la eliminación de puntos, o hacerlo en tiempo lineal con el vector.
Complejidad
Subtarea 3:
Se pueden mantener y como vectores, y mantener la mejor respuesta, cada vez que se inserte un nuevo elemento en , probarlo con todos los de y actualizar la mejor respuesta si es necesario, similarmente en caso contrario.
Complejidad
Subtarea 4:
Se pueden mantener las soluciones de todos los pares de elementos de y en una estructura de datos.
Al insertar un elemento en , insertar las respuestas de los pares formados por él y cada elemento de , similarmente al insertar en ,
Al eliminar un elemento de eliminar las respuestas de los pares formados por él y cada elemento de similarmente al eliminar en .
Luego las queries son simplemente decir el mayor número de la estructura de datos.
Usando como estructura un multiset, la complejidad sería lo cual unido a la alta constante del multiset, podría ocasionar tiempo límite excedido.
Para optimizar se puede usar un sqrt descomposition que soporte updates en y queries en para lograr una complejidad de .
Subtarea 5:
En esta subtarea se puede mantener una pila monótona para y otra para , y usar una idea similar a la de la subtarea 3 pero usando búsqueda binaria para optimizar las operaciones.
Subtarea 6:
Esta subtarea permite soluciones con complejidad usando sqrt on queries, o sea, procesando cada bloque de tamaño de queries de forma independiente.
Subtarea 7:
Tenga en cuenta que decir es equivalente a decir .
Esto motiva a mantener y para los elementos en y respectivamente. Para cada elemento en , llame a su , y para cada elemento en , llame a su . Cree un árbol de segmentos donde las hojas estén codificadas en .
Cada nodo en el árbol de segmentos rastrea cinco valores, los valores mínimos posibles de , y el valor mínimo posible de sobre todos los puntos cubiertos por el rango de implícito. Los primeros cuatro valores se pueden mantener directamente, por lo que queda por mantener el quinto valor. Dado que es equivalente a , para cualquier nodo interno, el mínimo posible el valor de se obtiene sumando del hijo izquierdo y del derecho hijo, o sumando del hijo derecho y del hijo izquierdo. Por lo tanto, actualizar los valores para un nodo dado se puede hacer en tiempo constante, por lo que cada actualización se puede procesar en tiempo logarítmico.
Comments