| DJC | Programación Competitiva | Codeforces |
Contest 2147 - Codeforces - DJC
Link al contest Aquí
A. El camino creciente más corto
límite de tiempo por prueba: 1 segundo
límite de memoria por prueba: 256 megabytes
Estás en (0,0) en una cuadrícula rectangular y quieres ir a (x,y).
Para hacerlo, se te permite realizar una secuencia de pasos.
Cada paso consiste en moverse una cantidad entera positiva de longitud en la dirección positiva del eje x o del eje y.
El primer paso debe ser a lo largo del eje x, el segundo a lo largo del eje y, el tercero a lo largo del eje x, y así sucesivamente. Formalmente, si numeramos los pasos desde uno en el orden en que se hacen, entonces los pasos impares deben ser a lo largo del eje x y los pares a lo largo del eje y.
Además, cada paso debe tener una longitud estrictamente mayor que la del paso anterior.
Imprime el número mínimo de pasos necesarios para llegar a (x,y), o −1 si es imposible.
Entrada Cada prueba contiene múltiples casos de prueba. La primera línea contiene el número de casos de prueba t (1 ≤ t ≤ 10⁴). La descripción de los casos de prueba sigue.
La primera y única línea de cada caso contiene dos enteros x e y (1 ≤ x,y ≤ 10⁹).
Salida Para cada caso de prueba, imprime el número mínimo de pasos para llegar a (x,y) o −1 si es imposible.
Ejemplo
Entrada
10
1 2
5 6
4 2
1 1
2 1
3 3
5 1
5 4
752 18572
95152 2322
Salida
2
2
3
-1
-1
-1
-1
-1
2
3
Nota
En el segundo caso de prueba, puedes moverte a (5,0) avanzando 5 en el eje x y luego a (5,6) avanzando 6 en el eje y.
En el tercer caso de prueba, puedes moverte a (1,0), luego a (1,2), y finalmente a (4,2).
En el cuarto caso de prueba, llegar a (1,1) es imposible ya que después de moverte a (1,0) en el eje x, estás obligado a moverte al menos 2 en el eje y.
B. Construcción múltiple
Límite de tiempo por prueba: 1 segundo
Límite de memoria por prueba: 256 megabytes
Se te da un entero n
.
Tu tarea es construir un arreglo de longitud 2⋅n
tal que:
- Cada número entero de
1
an
aparezca exactamente dos veces en el arreglo. - Para cada número
x (1 ≤ x ≤ n)
, la distancia entre sus dos ocurrencias sea un múltiplo dex
.
En otras palabras, si pₓ
y qₓ
son los índices de las dos ocurrencias de x
, entonces |qₓ − pₓ|
debe ser divisible por x
.
Se puede demostrar que siempre existe una solución.
Entrada
Cada prueba contiene múltiples casos de prueba.
- La primera línea contiene el número de casos de prueba t (1 ≤ t ≤ 10⁴)
.
- Las siguientes t
líneas contienen un único entero n (1 ≤ n ≤ 2⋅10⁵)
.
Se garantiza que la suma de n
en todos los casos de prueba no excede 2⋅10⁵
.
Salida
Para cada caso de prueba, imprime una línea que contenga 2⋅n
enteros — el arreglo que satisface las condiciones dadas.
Si hay múltiples respuestas válidas, imprime cualquiera de ellas.
Ejemplo
Entrada
3
2
3
1
Salida
1 2 1 2
1 3 1 2 3 2
1 1
Nota
Enlace al visualizador
- En el primer caso de prueba:
- El número
1
aparece en las posiciones 1 y 3 → la distancia es 2, divisible por 1. -
El número
2
aparece en las posiciones 2 y 4 → la distancia es 2, divisible por 2. -
En el segundo caso de prueba:
- El número
1
aparece en las posiciones 1 y 3 → la distancia es 2, divisible por 1. - El número
2
aparece en las posiciones 4 y 6 → la distancia es 2, divisible por 2. -
El número
3
aparece en las posiciones 2 y 5 → la distancia es 3, divisible por 3. -
En el tercer caso de prueba:
- El número
1
aparece en las posiciones 1 y 2 → la distancia es 1, divisible por 1.
C. Conejos
Límite de tiempo por test: 2 segundos
Límite de memoria por test: 256 megabytes
Tienes n macetas de flores dispuestas en una línea numeradas del 1 al n de izquierda a derecha.
Algunas macetas contienen flores, mientras que otras están vacías.
Se te da una cadena binaria s que describe qué macetas tienen flores (si = 1
) y cuáles están vacías (si = 0
).
También tienes algunos conejos y quieres tomar una bonita foto de los conejos y las flores.
Quieres poner conejos en cada maceta vacía (si = 0
), y para cada conejo puedes hacerlo mirar hacia la izquierda o hacia la derecha.
Desafortunadamente, los conejos son bastante traviesos e intentarán saltar, lo cual arruinará la foto.
Reglas
- Cada conejo se preparará para saltar a la siguiente maceta en la dirección en la que mira.
- No saltará si:
- Ya hay un conejo en esa maceta.
- Otro conejo se prepara para saltar a esa misma maceta desde el lado opuesto.
- Los conejos no saltarán fuera de los bordes (un conejo en la maceta 1 mirando a la izquierda no saltará, lo mismo para un conejo en la maceta n mirando a la derecha).
Objetivo
Elegir las direcciones de los conejos de manera que nunca salten, permitiéndote tomar la foto.
Debes determinar si existe una disposición válida.
Entrada
Cada test contiene múltiples casos de prueba.
- La primera línea contiene el número de casos de prueba t (1 ≤ t ≤ 10⁴).
- La descripción de los casos de prueba sigue.
Para cada caso de prueba:
- La primera línea contiene un entero n (1 ≤ n ≤ 2·10⁵).
- La segunda línea contiene una cadena binaria s de tamaño n, que indica las macetas ocupadas y vacías.
Se garantiza que la suma de n en todos los casos no excede 2·10⁵.
Salida
Para cada caso de prueba, imprime "YES" si existe una configuración de conejos que satisfaga la condición, y "NO" en caso contrario.
Puedes imprimir la respuesta en cualquier combinación de mayúsculas o minúsculas.
Por ejemplo: "yEs"
, "yes"
, "Yes"
, "YES"
serán reconocidas como respuestas positivas.
Ejemplo
Entrada
12
4
0100
3
000
8
11011011
5
00100
1
1
5
01011
2
01
7
0101011
7
1101010
5
11001
4
1101
9
001101100
Salida
SÍ
SÍ
NO
SÍ
SÍ
SÍ
SÍ
SÍ
SÍ
SÍ
NO
NO
Nota
Enlace al visualizador
Explicación (Caso 1):
- Una configuración válida:
- Conejo en la posición 1 → derecha
- Conejo en la posición 3 → izquierda
- Conejo en la posición 4 → izquierda
Ningún conejo se moverá porque:
- El conejo en la maceta 1 no saltará a la 2 (el de la 3 mira a la izquierda).
- El conejo en la maceta 3 no saltará a la 2 (el de la 1 mira a la derecha).
- El conejo en la maceta 4 no saltará a la 3 (ya hay un conejo).
Explicación (Caso 2):
- Una configuración válida:
- Conejo en la posición 1 → izquierda
- Conejo en la posición 2 → derecha
- Conejo en la posición 3 → izquierda
Ningún conejo se moverá porque:
- El conejo en la maceta 1 no saltará (borde).
- El conejo en la maceta 2 no saltará a la 3 (ya ocupada).
- El conejo en la maceta 3 no saltará a la 2 (ya ocupada).
Se puede probar que no existe una disposición válida en el Caso 3.
D Juego en el arreglo
E OR máximo con conteo de bits
F Consultas de intercambio
G Tetración modular
H Coloreo de flujo máximo con MCD
I1 Camino creciente más largo (Versión fácil)
I2 Camino creciente más largo (Versión difícil)
| DJC | Programación Competitiva | Codeforces |