Cây hoán vị
Đề bài
Mô tả
Mùa Giáng Sinh năm nay ấm áp, đôi bạn Đông và Bắc rủ nhau ở nhà cùng nghiên cứu một thuật toán sắp xếp tổ hợp có cấu trúc đặc biệt. Ban đầu Đông chuẩn bị một hoán vị của số nguyên dương rồi đưa cho Bắc. Tiếp theo, Đông tìm hoán vị đi ngay sau hoán vị trong thứ tự từ điển rồi đưa cho Bắc, và cứ tiếp tục như vậy. Nhắc lại là: Hoán vị được gọi là đi trước hoán vị theo thứ tự từ điển nếu như tồn tại một chỉ số () sao cho:
- nếu thì ;
- nếu thì với và .
Với mỗi hoán vị nhận được từ Đông, Bắc tiến hành dựng cây nhị phân có cấu trúc như sau:
- Nút gốc của được gán nhãn là số lớn nhất của ;
- Giả sử và lần lượt là dãy con bên trái và bên phải của trong . Gọi là số lớn nhất của dãy và là số lớn nhất của dãy . Khi đó nút gốc của sẽ có hai cây con: cây con trái với gốc được gán nhãn và cây con phải với gốc được gán nhãn . Nếu dãy là rỗng thì nút gốc của không có con trái. Nếu dãy là rỗng thì nút gốc của không có con phải;
- Nếu dãy là khác rỗng thì cây con gốc tại được xây dựng một cách đệ qui đối với dãy con giống như việc xây dựng cây ;
- Nếu dãy là khác rỗng thì cây con gốc tại được xây dựng một cách đệ qui đối với dãy con giống như việc xây dựng cây .
Ví dụ: Với thì cây như sau: gốc có con trái và con phải ; nút có con trái và con phải ; nút có con trái ; nút chỉ có con phải ; nút có con trái và con phải .
Cây xây dựng theo qui tắc nêu trên được gọi là cây nhị phân tương ứng với hoán vị .
Tiếp theo Bắc tiến hành liệt kê các nút của cây theo thứ tự sau và thu được một hoán vị mới gồm các nhãn của các nút được sắp xếp theo trình tự các nút được liệt kê. Nhắc lại là: Việc liệt kê các nút của cây theo thứ tự sau được định nghĩa một cách đệ qui như sau:
- Nếu cây chỉ có một nút thì danh sách gồm một nút duy nhất đó là danh sách các nút của cây được liệt kê theo thứ tự sau;
- Nếu cây có nhiều hơn một nút thì danh sách các nút của cây được liệt kê theo thứ tự sau là: đầu tiên là các nút của cây con trái của được liệt kê theo thứ tự sau, tiếp đến là các nút của cây con phải của được liệt kê theo thứ tự sau, cuối cùng là nút gốc.
Ví dụ: Với hoán vị trong ví dụ trên, hoán vị thu được bởi việc liệt kê các nút của cây nhị phân tương ứng với nó theo thứ tự sau là .
Đôi bạn xét tính chất TSort sau đây trên tập các hoán vị của các số nguyên dương từ đến : "Hoán vị được nói là có tính chất TSort nếu việc liệt kê các nút của cây nhị phân tương ứng với nó theo thứ tự sau cho ta hoán vị đơn vị, nghĩa là hoán vị có dạng ". Đông và Bắc muốn khảo sát xem những hoán vị như vậy có phải là thường gặp hay không.
Yêu cầu: Cho là một hoán vị của các số , hãy viết chương trình giúp đôi bạn xác định số lượng hoán vị trong số hoán vị liên tiếp theo thứ tự từ điển bắt đầu từ (kể cả ) thoả mãn tính chất TSort.
Dữ liệu vào
- Dòng đầu gồm hai số nguyên dương và .
- Dòng thứ hai gồm số nguyên dương là các thành phần của hoán vị .
Hai số liên tiếp trên cùng một dòng được ghi cách nhau bởi dấu cách.
Dữ liệu ra
In ra một số nguyên duy nhất là số lượng hoán vị trong số hoán vị liên tiếp theo thứ tự từ điển bắt đầu từ (kể cả ) thoả mãn tính chất TSort.
Ràng buộc
- ; .
- Dữ liệu đảm bảo tính từ (kể cả ) có ít nhất hoán vị theo thứ tự từ điển.
Subtasks
- Subtask 1 ( số điểm): .
- Subtask 2 ( số điểm): .
- Subtask 3 ( số điểm): , .
Mỗi subtask gồm nhiều test, mỗi test được chấm điểm riêng.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 6 1 3 4 2 |
4 | Sáu hoán vị: , , , , , . Bốn hoán vị ở giữa có tính chất TSort; thì không, vì thứ tự sau của nó là . |
| 5 10 2 1 5 4 3 |
1 | Chỉ có tính chất TSort. Chín hoán vị sau (từ đến ) đều có , rồi một số lớn hơn , rồi theo đúng thứ tự đó, nên trong thứ tự sau số đứng trước số . |
Bình luận