Phiên xử lý tối thiểu
Đề bài
Mô tả
Cho hoán vị của các số từ đến .
Với hai giá trị , ta nói đoạn giá trị xử lý được trong một phiên nếu các giá trị xuất hiện trong hoán vị theo đúng thứ tự tăng dần, tức là tồn tại các chỉ số sao cho , , ..., .
Nếu đoạn không xử lý được trong một phiên, ta phải chia nó thành các đoạn con liên tiếp với , sao cho mỗi đoạn con xử lý được trong một phiên. Khi đó cần phiên.
Hãy xử lý truy vấn thuộc hai loại:
1 x y— in ra số phiên tối thiểu cần để xử lý các giá trị từ đến .2 x y— hoán đổi hai phần tử đang đứng ở vị trí và vị trí (tức là đổi chỗ và ).
Lưu ý ở truy vấn loại thì là giá trị, còn ở truy vấn loại thì là vị trí trong hoán vị.
Dữ liệu vào
- Dòng đầu chứa số nguyên — độ dài hoán vị.
- Dòng thứ hai chứa số nguyên — hoán vị ban đầu.
- Dòng thứ ba chứa số nguyên — số truy vấn.
- dòng tiếp theo, mỗi dòng chứa ba số nguyên , , mô tả một truy vấn như trên ().
Dữ liệu ra
Với mỗi truy vấn loại , in ra trên một dòng số phiên tối thiểu tương ứng.
Ràng buộc
- là một hoán vị của
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 3 4 2 5 6 1 1 5 1 3 4 2 2 3 1 1 5 2 1 5 1 1 5 |
2 1 3 5 |
Ban đầu . Đoạn chia được thành (giá trị ở vị trí , giá trị ở vị trí ) và (các vị trí ), tổng cộng phiên. Đoạn chỉ cần phiên vì đứng ngay trước . Sau khi đổi chỗ vị trí và ta có , đoạn cần phiên: . Sau khi đổi chỗ vị trí và ta có , hoàn toàn đảo ngược nên mỗi giá trị là một phiên riêng: phiên. |
| 2 2 1 5 1 1 2 2 1 2 1 1 2 2 1 2 1 1 2 |
2 1 2 |
Ban đầu : giá trị đứng sau giá trị nên cần phiên. Sau lần đổi chỗ đầu tiên , chỉ cần phiên. Sau lần đổi chỗ thứ hai trở lại nên lại cần phiên. |
Bình luận