QOJ.ac

QOJ

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

#21437. Cách nhau hai bước

Statistics

Có một cỗ máy biến đổi xâu chuyên xử lý các xâu $\texttt{01}$, bên trong được thiết lập sẵn một tập hợp hữu hạn $\mathcal{R}$ gồm một số quy tắc. Mỗi quy tắc có dạng $(u, v)$, trong đó $u, v$ là các xâu $\texttt{01}$ khác rỗng có cùng độ dài, biểu thị rằng trong một bước thao tác, có thể chọn một xâu con $u$ của xâu hiện tại và thay thế nó bằng $v$. Mỗi lần đưa vào máy một cặp xâu $\texttt{01}$ khác rỗng có cùng độ dài $(s, t)$, máy sẽ xuất ra số bước thao tác ít nhất cần thiết để biến đổi $s$ thành $t$, hoặc báo vô nghiệm.

Bạn nhớ lại rằng mình từng đưa vào cỗ máy này $n$ cặp xâu $\texttt{01}$ khác rỗng có cùng độ dài $(s_1, t_1), (s_2, t_2), \dots, (s_n, t_n)$. Trùng hợp là trong trí nhớ của bạn, mỗi truy vấn không những đều có nghiệm mà còn thỏa mãn số bước thao tác ít nhất $d_i \leqslant 2$.

Để kiểm tra xem trí nhớ của bạn có bị sai lệch hay không, hãy xác định xem: có tồn tại một tập quy tắc $\mathcal{R}$ sao cho kết quả thực tế của máy đối với $n$ bộ dữ liệu đầu vào này hoàn toàn khớp với trí nhớ của bạn hay không?

Dữ liệu vào

Dòng đầu tiên chứa một số nguyên dương $T$, biểu thị số lượng bộ dữ liệu kiểm tra.

Đối với mỗi bộ dữ liệu kiểm tra, dòng đầu tiên chứa một số nguyên dương $n$, biểu thị số lượng bản ghi truy vấn. Trong $n$ dòng tiếp theo, dòng thứ $i$ chứa hai xâu $\texttt{01}$ khác rỗng có cùng độ dài $s_i, t_i$ và một số nguyên $d_i$ ($0 \leqslant d_i \leqslant 2$), lần lượt biểu thị xâu ban đầu, xâu đích và số bước thao tác ít nhất mà máy đưa ra ở lần nhập thứ $i$.

Dữ liệu ra

Đối với mỗi bộ dữ liệu kiểm tra, in ra một xâu trên một dòng. Nếu tồn tại tập quy tắc $\mathcal{R}$ thỏa mãn điều kiện thì in ra YES; ngược lại in ra NO.

Bạn có thể in ra YES và NO ở bất kỳ dạng chữ hoa hay chữ thường nào, ví dụ yes, Yes hoặc YES đều được coi là cùng một đáp án.

Ví dụ

Dữ liệu vào 1

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

Dữ liệu ra 1

YES
NO
NO

Ghi chú

  • Bộ dữ liệu kiểm tra thứ $1$: Có thể xây dựng tập hợp chỉ chứa một quy tắc $\mathcal{R} = \{(\texttt{01}, \texttt{10})\}$:
    • Đối với truy vấn thứ $1$, $s_1 = t_1 = \texttt{010}$, không cần bất kỳ thao tác nào cũng hoàn thành biến đổi, số bước thao tác ít nhất là $0$.
    • Đối với truy vấn thứ $2$, thay thế hậu tố $\texttt{01}$ của $\texttt{001}$ bằng $\texttt{10}$, ta thu được $\texttt{010}$ chỉ trong $1$ bước.
    • Đối với truy vấn thứ $3$, do $\texttt{001}$ và $\texttt{100}$ khác nhau ở cả vị trí thứ $1$ lẫn vị trí thứ $3$, chỉ dựa vào quy tắc độ dài $2$ thì không thể hoàn thành biến đổi trong $1$ bước; nhưng có thể thay thế hậu tố $\texttt{01}$ của xâu ban đầu $\texttt{001}$ bằng $\texttt{10}$ trước để thu được xâu trung gian $\texttt{010}$, sau đó thay thế tiền tố $\texttt{01}$ của xâu trung gian $\texttt{010}$ bằng $\texttt{10}$ để thu được xâu đích $\texttt{100}$, vì vậy số bước thao tác ít nhất là $2$.
  • Bộ dữ liệu kiểm tra thứ $2$: Để biến đổi $\texttt{10}$ thành $\texttt{01}$ trong $1$ bước, tập quy tắc $\mathcal{R}$ bắt buộc phải chứa quy tắc $(\texttt{10}, \texttt{01})$. Tuy nhiên, một khi chứa quy tắc này, truy vấn thứ $2$ chỉ cần thay thế tiền tố $\texttt{10}$ của $\texttt{100}$ bằng $\texttt{01}$ là có thể thu được $\texttt{010}$ trong $1$ bước, mâu thuẫn với $d_2 = 2$ trong trí nhớ.
  • Bộ dữ liệu kiểm tra thứ $3$: Tất cả các xâu trong quá trình biến đổi đều phải là các xâu $\texttt{01}$ có cùng độ dài. Các xâu $\texttt{01}$ có độ dài $1$ chỉ có hai loại là $\texttt{0}$ và $\texttt{1}$; nếu có thể biến đổi từ $\texttt{0}$ thành $\texttt{1}$ thì chắc chắn phải tồn tại quy tắc $(\texttt{0}, \texttt{1})$ và chỉ cần $1$ bước để hoàn thành, không thể đòi hỏi ít nhất $2$ bước.

Giới hạn

Đối với tất cả dữ liệu kiểm tra, đảm bảo $T \geqslant 1$, $n \geqslant 1$, $0 \leqslant d_i \leqslant 2$, $1 \leqslant |s_i| = |t_i|$, và $s_i, t_i$ đều là các xâu chỉ chứa các ký tự $\texttt{0}$ và $\texttt{1}$.

Đặt $L = \sum_{i=1}^{n} |s_i|$ là tổng độ dài của tất cả các xâu ban đầu trong một bộ dữ liệu kiểm tra, và $\sum L$ là tổng của $L$ trên tất cả các bộ dữ liệu kiểm tra trong một test, đảm bảo $\sum L \leqslant 3\times 10^6$.

Bài toán này bật quan hệ phụ thuộc nhiệm vụ con hợp lý.

Nhiệm vụ con Điểm $\sum L \leqslant$ Tính chất đặc biệt
$1$ $16$ $4 \times 10^3$ A
$2$ $20$ $3\times 10^6$ A
$3$ $20$ $2\times 10^4$ Không
$4$ $28$ $10^5$ Không
$5$ $16$ $3 \times 10^6$ Không
  • Tính chất đặc biệt A: Đảm bảo với mọi $1 \leqslant i \leqslant n$, đều có $|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.