Xác định các thao tác
Đề bài
Mô tả
Cho một hoán vị và một mảng ban đầu rỗng. Ta thực hiện thao tác sau đúng lần.
Ở lần thực hiện thứ , ta chọn một chỉ số (), xoá phần tử khỏi mảng , rồi thêm một trong hai phần tử kề hoặc (nếu chỉ số tương ứng còn nằm trong mảng) vào cuối mảng . Sau đó các phần tử được dồn sang trái để lấp chỗ trống.
Nói cách khác, mỗi thao tác xoá một phần tử của và thêm vào một phần tử kề với phần tử vừa bị xoá (tại thời điểm xoá).
Cho hoán vị ban đầu và mảng kết quả . Tất cả các phần tử của đều đôi một khác nhau. Hãy đếm số dãy chỉ số có thể sinh ra đúng mảng , lấy phần dư khi chia cho .
Dữ liệu vào
- Dòng đầu chứa số nguyên là số bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa hai số nguyên .
- Dòng thứ hai chứa số nguyên là các phần tử của .
- Dòng thứ ba chứa số nguyên là các phần tử của .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra một số nguyên là số dãy chỉ số hợp lệ lấy phần dư cho .
Ràng buộc
- , các đôi một khác nhau (là một hoán vị).
- , các đôi một khác nhau.
- Tổng của trên tất cả các bộ dữ liệu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 5 3 1 2 3 4 5 3 2 5 4 3 4 3 2 1 4 3 1 7 4 1 4 7 3 6 2 5 3 2 4 5 |
2 0 4 |
Bộ 1: hai cách, ví dụ hoặc . Bộ 2: không thể tạo ra nên đáp án là . Bộ 3: có bốn cách. |
| 6 2 1 2 1 1 3 2 1 3 2 1 3 4 2 4 1 3 2 1 2 5 3 4 3 2 5 1 1 4 5 6 3 2 4 5 6 1 3 2 4 5 7 3 7 6 4 3 2 1 5 1 2 6 |
1 0 2 0 0 4 |
Mỗi bước, số cách chọn bằng số phần tử kề còn có thể xoá; nhân dồn các số cách này lại. |
Bình luận