Lại là đếm hoán vị

Xem dạng PDF

Gửi bài giải


Điểm: 0,01 (OI)
Giới hạn thời gian: 3.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Với một hoán vị ~a~ độ dài ~n~, định nghĩa ma trận MEX của dãy ~a~ là ma trận ~M~ có kích thước ~n \times n~, trong đó giá trị của phần tử ~M_{i, j}~ được xác định như sau:

  • ~M_{i, j} = mex\left(a_i, a_{i + 1}, \dots, a_j\right)~ với ~i \le j~;

  • ~M_{i, j} = -1~ với ~i > j~.

Một hoán vị ~a~ độ dài ~n~ được gọi là ~k~-good (~0 \le k < n~) nếu không tồn tại hoán vị ~b~ độ dài ~n~ sao cho:

  • Vị trí của phần tử có giá trị ~k~ trong hoán vị ~a~ khác với vị trí của phần tử có giá trị ~k~ trong hoán vị ~b~.

  • Ma trận MEX của hai hoán vị ~a~ và ~b~ giống nhau.

Cho dãy số nguyên ~a'_1, a'_2, \ldots, a'_n~ (~-1 \le a'_i < n~). Với mọi ~k~ từ ~0~ đến ~n - 1~, hãy đếm số lượng hoán vị ~a~ độ dài ~n~ thỏa mãn:

  • Với mọi ~i~ từ ~1~ đến ~n~, nếu ~a'_i \ne -1~ thì ~a_i = a'_i~;

  • ~a~ là hoán vị ~k~-good.

Vì kết quả có thể rất lớn, hãy in ra các đáp án sau khi chia lấy dư cho ~998\ 244\ 353~.


Một hoán vị độ dài ~n~ là dãy số bao gồm ~n~ số nguyên không âm phân biệt có giá trị từ ~0~ đến ~n-1~ được sắp xếp theo thứ tự bất kỳ. Ví dụ, ~[1, 2, 0, 4, 3]~ là một hoán vị có độ dài ~n=5~, tuy nhiên ~[0, 1, 1]~ không phải là hoán vị (~1~ xuất hiện hai lần trong dãy), và ~[2, 1, 3]~ cũng không phải là hoán vị (~n=3~ nhưng lại xuất hiện số ~3~ trong dãy).

Giá trị ~mex~ của một dãy số nguyên là số nguyên không âm nhỏ nhất không xuất hiện trong dãy. Ví dụ:

  • Giá trị ~mex~ của dãy ~[2, 2, 1]~ bằng ~0~, vì ~0~ không xuất hiện trong dãy.

  • Giá trị ~mex~ của dãy ~[3, 1, 0, 1]~ bằng ~2~, vì ~0~ và ~1~ xuất hiện trong dãy, nhưng ~2~ thì không.

  • Giá trị ~mex~ của dãy ~[0, 3, 1, 2]~ bằng ~4~, vì ~0,1,2,3~ xuất hiện trong dãy, nhưng ~4~ thì không.

Input

Dòng đầu tiên chứa số nguyên ~t~ (~1 \le t \le 5000~) — số lượng test case. Mô tả của mỗi test case như sau:

  • Dòng đầu tiên chứa số nguyên dương ~n~ (~1 \le n \le 5000~) — kích thước của dãy ~a'~.

  • Dòng thứ hai chứa ~n~ số nguyên ~a'_1, a'_2, \dots, a'_n~ (~-1 \le a'_i < n~). Đảm bảo các phần tử có giá trị không âm chỉ xuất hiện một lần trong dãy ~a'~.

Đảm bảo rằng tổng ~n~ qua tất cả các test case không vượt quá ~5000~.

Output

Với mỗi test case, hãy in ra ~n~ số nguyên, trong đó số thứ ~i~ là số lượng dãy ~a~ thỏa mãn điều kiện đề bài tương ứng với ~k = i - 1~. Vì kết quả có thể rất lớn, hãy in ra các đáp án sau khi chia lấy dư cho ~998\ 244\ 353~.

Scoring

Subtask Điểm Giới hạn
1 ~500~ ~n \le 7~
2 ~1000~ Trong tất cả test case, ~a'_i=-1~ với mọi ~i~ từ ~1~ đến ~n~
3 ~1250~ Tổng ~n~ qua tất cả test case không vượt quá ~500~
4 ~750~ Không có ràng buộc gì thêm
Total ~3500~

Sample Input 1

6
1
-1
2
-1 0
3
-1 -1 -1
4
2 3 -1 -1
5
-1 1 -1 4 -1
6
3 -1 5 4 -1 -1

Sample Output 1

1 
1 1 
6 6 6 
2 2 2 2 
6 6 5 4 3 
6 6 4 6 0 0

Notes

Trong ba test case đầu tiên, có thể chỉ ra rằng tất cả hoán vị độ dài ~n \le 3~ đều là hoán vị ~k~-good với mọi ~k~ từ ~0~ đến ~n - 1~. Vì thế:

  • Trong test case thứ nhất, chỉ có ~1~ hoán vị ~a~ có thể tạo ra từ dãy ~a'~ là ~[0]~ nên đáp án cho test case này với ~k = 0~ là ~1~.

  • Trong test case thứ hai, chỉ có ~1~ hoán vị ~a~ có thể tạo ra từ dãy ~a'~ là ~[1, 0]~ nên đáp án cho test case này với ~k = 0, 1~ là ~1~.

  • Trong test case thứ ba, có ~6~ hoán vị ~a~ có thể tạo ra từ dãy ~a'~ là ~[0, 1, 2]~; ~[0, 2, 1]~; ~[1, 0, 2]~; ~[1, 2, 0]~; ~[2, 0, 1]~ và ~[2, 1, 0]~ nên đáp án cho test case này với ~k = 0, 1, 2~ là ~6~.

Trong test case thứ tư, từ dãy ~a'~ có thể tạo ra hai hoán vị ~a~ khác nhau là: ~[2,3,0,1]~; ~[2,3,1,0]~, với ma trận MEX lần lượt như sau: $$\begin{array}{cc} \begin{array}{|r|r|r|r|} \hline 0 & 0 & 1 & 4 \\ \hline \color{grey}{-1} & 0 & 1 & 2 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 1 & 2 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 \\ \hline \end{array} & \begin{array}{|r|r|r|r|} \hline 0 & 0 & 0 & 4 \\ \hline \color{grey}{-1} & 0 & 0 & 2 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 0 & 2 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 1 \\ \hline \end{array} \\ \end{array}$$

Có thể chỉ ra rằng không có hoán vị ~b \ne a~ nào cho ra hai ma trận MEX trên, nên mọi hoán vị ~a~ tạo được đều là hoán vị ~k~-good với mọi ~k~ từ ~0~ đến ~n - 1~. Đáp án cho test case này với ~k = 0, 1, 2, 3~ đều là ~2~.

Trong test case thứ năm, có thể tạo ra sáu hoán vị ~a~ khác nhau là: ~[0, 1, 2, 4, 3]~; ~[0, 1, 3, 4, 2]~; ~[2, 1, 0, 4, 3]~; ~[2, 1, 3, 4, 0]~; ~[3, 1, 0, 4, 2]~ và ~[3, 1, 2, 4, 0]~, với ma trận MEX lần lượt như sau:

$$\begin{array}{ccccc} \begin{array}{|r|r|r|r|r|} \hline 1 & 2 & 3 & 3 & 5 \\ \hline \color{grey}{-1} & 0 & 0 & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 0 & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 \\ \hline \end{array} & \begin{array}{|r|r|r|r|r|} \hline 1 & 2 & 2 & 2 & 5 \\ \hline \color{grey}{-1} & 0 & 0 & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 0 & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 \\ \hline \end{array} & \begin{array}{|r|r|r|r|r|} \hline 0 & 0 & 3 & 3 & 5 \\ \hline \color{grey}{-1} & 0 & 2 & 2 & 2 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 1 & 1 & 1 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 \\ \hline \end{array} & \end{array}$$

$$\begin{array}{ccccc} \begin{array}{|r|r|r|r|r|} \hline 0 & 0 & 0 & 0 & 5 \\ \hline \color{grey}{-1} & 0 & 0 & 0 & 2 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 0 & 0 & 1 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 & 1 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 1 \\ \hline \end{array} & \begin{array}{|r|r|r|r|r|} \hline 0 & 0 & 2 & 2 & 5 \\ \hline \color{grey}{-1} & 0 & 2 & 2 & 3 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 1 & 1 & 1 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 & 0 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 \\ \hline \end{array} & \begin{array}{|r|r|r|r|r|} \hline 0 & 0 & 0 & 0 & 5 \\ \hline \color{grey}{-1} & 0 & 0 & 0 & 3 \\ \hline \color{grey}{-1} & \color{grey}{-1} & 0 & 0 & 1 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 0 & 1 \\ \hline \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & \color{grey}{-1} & 1 \\ \hline \end{array} & \end{array}$$

  • Với ~k = 0~ và ~k = 1~, mọi hoán vị ~a~ tạo được đều là hoán vị ~0~-good và ~1~-good nên đáp án là ~6~.

  • Với ~k = 2~, đáp án là ~5~ do có hoán vị ~a~ sau không thỏa mãn:

    • Hoán vị ~a = [3, 1, {\color{red}{2}}, 4, 0]~ và ~b = [3, 1, 4, {\color{red}{2}}, 0]~ đều cho ra cùng ma trận MEX, nhưng ~a_2 = b_3 = 2~ ở vị trí khác nhau;

    Các hoán vị ~a~ còn lại đều là hoán vị ~2~-good.

  • Với ~k = 3~, đáp án là ~4~. Dưới đây là các cặp dãy ~a~ và ~b~ cho ra cùng ma trận MEX nhưng vị trí của giá trị ~3~ khác nhau:

    • ~a = [0, 1, {\color{red}{3}}, 4, 2]~, ~b = [0, 1, 4, {\color{red}{3}}, 2]~

    • ~a = [2, 1, {\color{red}{3}}, 4, 0]~, ~b = [2, 1, 4, {\color{red}{3}}, 0]~

  • Với ~k = 4~, đáp án là ~3~. Dưới đây là các cặp dãy ~a~ và ~b~ cho ra cùng ma trận MEX nhưng vị trí của giá trị ~4~ khác nhau:

    • ~a = [0, 1, 3, {\color{red}{4}}, 2]~, ~b = [0, 1, {\color{red}{4}}, 3, 2]~

    • ~a = [2, 1, 3, {\color{red}{4}}, 0]~, ~b = [2, 1, {\color{red}{4}}, 3, 0]~

    • ~a = [3, 1, 2, {\color{red}{4}}, 0]~, ~b = [3, 1, {\color{red}{4}}, 2, 0]~


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.