QOJ.ac

QOJ

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

#21437. 兩步之遙

Statistics

有一部專門處理 $\texttt{01}$ 串嘅字串變換機,入面預設咗一個包含若干條規則嘅有限集合 $\mathcal{R}$。每條規則形如 $(u, v)$,其中 $u, v$ 係非空等長嘅 $\texttt{01}$ 串,表示喺一步操作入面,可以揀當前字串嘅一個子串 $u$,並將佢替換成 $v$。每次向部機輸入一對非空等長 $\texttt{01}$ 串 $(s, t)$,部機都會輸出將 $s$ 變換成 $t$ 所需嘅最少操作步數,或者報告無解。

你記得自己曾經向呢部機輸入過 $n$ 對非空等長 $\texttt{01}$ 串 $(s_1, t_1), (s_2, t_2), \dots, (s_n, t_n)$。好彩嘅係,喺你嘅記憶入面,每次詢問唔單止都有解,而且滿足最少操作步數 $d_i \leqslant 2$。

為咗驗證你嘅記憶有冇出現偏差,請你判斷:係咪存在一個規則集 $\mathcal{R}$,令到部機對呢 $n$ 組輸入嘅實際輸出同你嘅記憶完全一致?

輸入格式

第一行包含一個正整數 $T$,表示測試數據組數。

對於每組測試數據,第一行包含一個正整數 $n$,表示詢問記錄嘅數量。接落嚟 $n$ 行,第 $i$ 行包含兩個非空等長 $\texttt{01}$ 串 $s_i, t_i$ 同埋一個整數 $d_i$($0 \leqslant d_i \leqslant 2$),分別表示第 $i$ 次輸入嘅初始串、目標串同埋部機畀出嘅最少操作步數。

輸出格式

對於每組測試數據,輸出一行一個字串。如果存在滿足條件嘅規則集 $\mathcal{R}$,就輸出 YES;否則輸出 NO。

你可以輸出 YES 同 NO 嘅任意大細楷形式,例如 yes、Yes 或者 YES 都會視作相同答案。

範例

輸入格式 1

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

輸出格式 1

YES
NO
NO

說明

  • 第 $1$ 組測試數據:可以構造只包含一條規則嘅集合 $\mathcal{R} = \{(\texttt{01}, \texttt{10})\}$:
    • 對於第 $1$ 次詢問,$s_1 = t_1 = \texttt{010}$,唔使任何操作就可以完成變換,最少操作步數係 $0$。
    • 對於第 $2$ 次詢問,將 $\texttt{001}$ 嘅後綴 $\texttt{01}$ 替換成 $\texttt{10}$,就可以喺 $1$ 步之內得到 $\texttt{010}$。
    • 對於第 $3$ 次詢問,由於 $\texttt{001}$ 同 $\texttt{100}$ 喺第 $1$ 位同第 $3$ 位都唔同,單靠長度為 $2$ 嘅規則冇辦法喺 $1$ 步之內完成變換;但係可以先將初始串 $\texttt{001}$ 嘅後綴 $\texttt{01}$ 替換成 $\texttt{10}$ 得到中間串 $\texttt{010}$,再將中間串 $\texttt{010}$ 嘅前綴 $\texttt{01}$ 替換成 $\texttt{10}$ 得到目標串 $\texttt{100}$,因此最少操作步數係 $2$。
  • 第 $2$ 組測試數據:為咗喺 $1$ 步之內將 $\texttt{10}$ 變換成 $\texttt{01}$,規則集 $\mathcal{R}$ 入面必須包含規則 $(\texttt{10}, \texttt{01})$。但係一旦包含呢條規則,第 $2$ 次詢問只需要將 $\texttt{100}$ 嘅前綴 $\texttt{10}$ 替換成 $\texttt{01}$,就可以喺 $1$ 步之內得到 $\texttt{010}$,同記憶入面嘅 $d_2 = 2$ 矛盾。
  • 第 $3$ 組測試數據:變換過程入面嘅所有字串都必須係等長嘅 $\texttt{01}$ 串。長度為 $1$ 嘅 $\texttt{01}$ 串只有 $\texttt{0}$ 同 $\texttt{1}$ 兩種,如果可以由 $\texttt{0}$ 變換成 $\texttt{1}$,就必然存在規則 $(\texttt{0}, \texttt{1})$ 而且只需要 $1$ 步就可以完成,唔可能最少需要 $2$ 步。

數據範圍

對於所有測試數據,保證 $T \geqslant 1$,$n \geqslant 1$,$0 \leqslant d_i \leqslant 2$,$1 \leqslant |s_i| = |t_i|$,而且 $s_i, t_i$ 都係只包含字符 $\texttt{0}$ 同 $\texttt{1}$ 嘅字串。

記 $L = \sum_{i=1}^{n} |s_i|$ 為單組測試數據入面所有初始串嘅長度總和,$\sum L$ 為單個測試點入面所有測試數據嘅 $L$ 總和,則保證 $\sum L \leqslant 3\times 10^6$。

本題開啟合理嘅子任務依賴。

子任務編號 分值 $\sum L \leqslant$ 特殊性質
$1$ $16$ $4 \times 10^3$ A
$2$ $20$ $3\times 10^6$ A
$3$ $20$ $2\times 10^4$ 無
$4$ $28$ $10^5$ 無
$5$ $16$ $3 \times 10^6$ 無
  • 特殊性質 A:保證對於所有 $1 \leqslant i \leqslant n$,都有 $|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.