QOJ.ac

QOJ

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

#21437. Två steg bort

Statistics

Det finns en strängomvandlingsmaskin som specifikt bearbetar $\texttt{01}$-strängar och som internt har en förinställd ändlig mängd regler $\mathcal{R}$. Varje regel har formen $(u, v)$, där $u, v$ är icke-tomma $\texttt{01}$-strängar av samma längd, vilket innebär att man i ett operationssteg kan välja en delsträng $u$ av den aktuella strängen och ersätta den med $v$. Varje gång ett par av icke-tomma $\texttt{01}$-strängar av samma längd $(s, t)$ matas in i maskinen, skriver maskinen ut det minsta antalet operationssteg som krävs för att omvandla $s$ till $t$, eller rapporterar att det saknas lösning.

Du minns att du en gång matade in $n$ par av icke-tomma $\texttt{01}$-strängar av samma längd $(s_1, t_1), (s_2, t_2), \dots, (s_n, t_n)$ i denna maskin. Av en händelse hade, enligt ditt minne, varje fråga inte bara en lösning, utan uppfyllde dessutom att det minsta antalet operationssteg var $d_i \leqslant 2$.

För att kontrollera om ditt minne sviker dig, avgör: finns det en regelmängd $\mathcal{R}$ sådan att maskinens faktiska utdata för dessa $n$ indata helt stämmer överens med ditt minne?

Indata

Den första raden innehåller ett positivt heltal $T$, som anger antalet testfall.

För varje testfall innehåller den första raden ett positivt heltal $n$, som anger antalet frågeposter. På de följande $n$ raderna innehåller den $i$-te raden två icke-tomma $\texttt{01}$-strängar av samma längd $s_i, t_i$ och ett heltal $d_i$ ($0 \leqslant d_i \leqslant 2$), som anger startsträngen, målsträngen respektive det minsta antalet operationssteg som maskinen angav vid den $i$-te inmatningen.

Utdata

För varje testfall, skriv ut en rad med en sträng. Om det finns en regelmängd $\mathcal{R}$ som uppfyller villkoren, skriv ut YES; annars, skriv ut NO.

Du får skriva ut YES och NO med valfri kombination av versaler och gemener; exempelvis räknas yes, Yes och YES som samma svar.

Exempel

Indata 1

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

Utdata 1

YES
NO
NO

Förklaring

  • Testfall $1$: Vi kan konstruera en mängd som endast innehåller en regel, $\mathcal{R} = \{(\texttt{01}, \texttt{10})\}$:
    • För den $1$:a frågan är $s_1 = t_1 = \texttt{010}$, så omvandlingen är klar utan några operationer och det minsta antalet operationssteg är $0$.
    • För den $2$:a frågan kan vi ersätta suffixet $\texttt{01}$ i $\texttt{001}$ med $\texttt{10}$, vilket ger $\texttt{010}$ på $1$ steg.
    • För den $3$:e frågan, eftersom $\texttt{001}$ och $\texttt{100}$ skiljer sig åt på både den $1$:a och den $3$:e positionen, kan en regel av längd $2$ ensam inte slutföra omvandlingen på $1$ steg; däremot kan vi först ersätta suffixet $\texttt{01}$ i startsträngen $\texttt{001}$ med $\texttt{10}$ för att få mellansträngen $\texttt{010}$, och därefter ersätta prefixet $\texttt{01}$ i mellansträngen $\texttt{010}$ med $\texttt{10}$ för att få målsträngen $\texttt{100}$, så det minsta antalet operationssteg är $2$.
  • Testfall $2$: För att omvandla $\texttt{10}$ till $\texttt{01}$ på $1$ steg måste regelmängden $\mathcal{R}$ innehålla regeln $(\texttt{10}, \texttt{01})$. Men så snart denna regel ingår, räcker det i den $2$:a frågan att ersätta prefixet $\texttt{10}$ i $\texttt{100}$ med $\texttt{01}$ för att få $\texttt{010}$ på $1$ steg, vilket strider mot $d_2 = 2$ i ditt minne.
  • Testfall $3$: Alla strängar under omvandlingsprocessen måste vara $\texttt{01}$-strängar av samma längd. Det finns bara två $\texttt{01}$-strängar av längd $1$, nämligen $\texttt{0}$ och $\texttt{1}$. Om $\texttt{0}$ kan omvandlas till $\texttt{1}$ måste regeln $(\texttt{0}, \texttt{1})$ finnas och det krävs bara $1$ steg för att bli klar, så det är omöjligt att det skulle krävas minst $2$ steg.

Begränsningar

För alla testdata garanteras att $T \geqslant 1$, $n \geqslant 1$, $0 \leqslant d_i \leqslant 2$, $1 \leqslant |s_i| = |t_i|$, samt att både $s_i, t_i$ är strängar som endast består av tecknen $\texttt{0}$ och $\texttt{1}$.

Låt $L = \sum_{i=1}^{n} |s_i|$ vara summan av längderna av alla startsträngar i ett enskilt testfall, och $\sum L$ vara summan av $L$ över alla testfall i en enskild testfil; det garanteras att $\sum L \leqslant 3\times 10^6$.

Rimliga deluppgiftsberoenden är aktiverade för detta problem.

Deluppgift Poäng $\sum L \leqslant$ Särskild egenskap
$1$ $16$ $4 \times 10^3$ A
$2$ $20$ $3\times 10^6$ A
$3$ $20$ $2\times 10^4$ Ingen
$4$ $28$ $10^5$ Ingen
$5$ $16$ $3 \times 10^6$ Ingen
  • Särskild egenskap A: Det garanteras att $|s_i| \geqslant 50$ gäller för alla $1 \leqslant i \leqslant n$.

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.