QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 2048 MB Total points: 100 Hackable ✓

#21437. A dos pasos

Statistics

Existe una máquina de transformación de cadenas que procesa específicamente cadenas $\texttt{01}$, la cual tiene preconfigurado internamente un conjunto finito de reglas $\mathcal{R}$. Cada regla tiene la forma $(u, v)$, donde $u, v$ son cadenas $\texttt{01}$ no vacías de igual longitud, lo que indica que en un paso de operación se puede elegir una subcadena $u$ de la cadena actual y reemplazarla por $v$. Cada vez que se introduce en la máquina un par de cadenas $\texttt{01}$ no vacías de igual longitud $(s, t)$, la máquina devuelve el número mínimo de pasos de operación necesarios para transformar $s$ en $t$, o informa que no hay solución.

Recuerdas haber introducido alguna vez en esta máquina $n$ pares de cadenas $\texttt{01}$ no vacías de igual longitud $(s_1, t_1), (s_2, t_2), \dots, (s_n, t_n)$. Casualmente, según tus recuerdos, cada consulta no solo tenía solución, sino que además cumplía que el número mínimo de pasos de operación era $d_i \leqslant 2$.

Para verificar si tu memoria tiene algún fallo, determina: ¿existe un conjunto de reglas $\mathcal{R}$ tal que las salidas reales de la máquina para estas $n$ entradas coincidan exactamente con tus recuerdos?

Entrada

La primera línea contiene un entero positivo $T$, que representa el número de casos de prueba.

Para cada caso de prueba, la primera línea contiene un entero positivo $n$, que representa la cantidad de registros de consultas. En las siguientes $n$ líneas, la $i$-ésima línea contiene dos cadenas $\texttt{01}$ no vacías de igual longitud $s_i, t_i$ y un entero $d_i$ ($0 \leqslant d_i \leqslant 2$), que representan respectivamente la cadena inicial, la cadena objetivo y el número mínimo de pasos de operación dado por la máquina en la $i$-ésima entrada.

Salida

Para cada caso de prueba, imprime una línea con una cadena. Si existe un conjunto de reglas $\mathcal{R}$ que cumpla las condiciones, imprime YES; de lo contrario, imprime NO.

Puedes imprimir YES y NO usando cualquier combinación de mayúsculas y minúsculas; por ejemplo, yes, Yes o YES se considerarán la misma respuesta.

Ejemplos

Entrada 1

3
3
010 010 0
001 010 1
001 100 2
2
10 01 1
100 010 2
1
0 1 2

Salida 1

YES
NO
NO

Nota

  • Caso de prueba $1$: Se puede construir un conjunto que contenga una sola regla, $\mathcal{R} = \{(\texttt{01}, \texttt{10})\}$:
    • Para la $1$-ra consulta, $s_1 = t_1 = \texttt{010}$, no se necesita ninguna operación para completar la transformación y el número mínimo de pasos de operación es $0$.
    • Para la $2$-da consulta, al reemplazar el sufijo $\texttt{01}$ de $\texttt{001}$ por $\texttt{10}$, se obtiene $\texttt{010}$ en $1$ paso.
    • Para la $3$-ra consulta, dado que $\texttt{001}$ y $\texttt{100}$ difieren tanto en la $1$-ra como en la $3$-ra posición, con solo reglas de longitud $2$ no es posible completar la transformación en $1$ paso; sin embargo, primero se puede reemplazar el sufijo $\texttt{01}$ de la cadena inicial $\texttt{001}$ por $\texttt{10}$ para obtener la cadena intermedia $\texttt{010}$, y luego reemplazar el prefijo $\texttt{01}$ de la cadena intermedia $\texttt{010}$ por $\texttt{10}$ para obtener la cadena objetivo $\texttt{100}$, por lo que el número mínimo de pasos de operación es $2$.
  • Caso de prueba $2$: Para transformar $\texttt{10}$ en $\texttt{01}$ en $1$ paso, el conjunto de reglas $\mathcal{R}$ debe contener la regla $(\texttt{10}, \texttt{01})$. Sin embargo, una vez incluida dicha regla, en la $2$-da consulta basta con reemplazar el prefijo $\texttt{10}$ de $\texttt{100}$ por $\texttt{01}$ para obtener $\texttt{010}$ en $1$ paso, lo cual contradice el $d_2 = 2$ de tus recuerdos.
  • Caso de prueba $3$: Todas las cadenas durante el proceso de transformación deben ser cadenas $\texttt{01}$ de igual longitud. Solo existen dos cadenas $\texttt{01}$ de longitud $1$, que son $\texttt{0}$ y $\texttt{1}$. Si se puede transformar $\texttt{0}$ en $\texttt{1}$, entonces necesariamente existe la regla $(\texttt{0}, \texttt{1})$ y basta $1$ paso para completarlo, por lo que es imposible que se necesiten como mínimo $2$ pasos.

Restricciones

Para todos los datos de prueba, se garantiza que $T \geqslant 1$, $n \geqslant 1$, $0 \leqslant d_i \leqslant 2$, $1 \leqslant |s_i| = |t_i|$, y que tanto $s_i, t_i$ son cadenas que contienen únicamente los caracteres $\texttt{0}$ y $\texttt{1}$.

Sea $L = \sum_{i=1}^{n} |s_i|$ la suma de las longitudes de todas las cadenas iniciales en un solo caso de prueba, y $\sum L$ la suma de $L$ de todos los casos de prueba dentro de un mismo archivo de prueba; se garantiza que $\sum L \leqslant 3\times 10^6$.

Este problema tiene activadas dependencias razonables entre subtareas.

Subtarea Puntaje $\sum L \leqslant$ Propiedad especial
$1$ $16$ $4 \times 10^3$ A
$2$ $20$ $3\times 10^6$ A
$3$ $20$ $2\times 10^4$ Ninguna
$4$ $28$ $10^5$ Ninguna
$5$ $16$ $3 \times 10^6$ Ninguna
  • Propiedad especial A: Se garantiza que para todo $1 \leqslant i \leqslant n$, se cumple $|s_i| \geqslant 50$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.