Cây XOR
Đề bài
Mô tả
Cho một dãy gồm số nguyên không âm đôi một phân biệt . Ta xây dựng một đồ thị vô hướng đỉnh, đỉnh thứ mang giá trị , theo quy tắc sau:
- Với mỗi từ đến , tìm chỉ số () sao cho giá trị là nhỏ nhất trong tất cả các lựa chọn của (ở đây là phép XOR theo bit). Thêm một cạnh vô hướng nối đỉnh và đỉnh .
Nếu một cạnh bị thêm hai lần thì nó chỉ được tính một lần. Dãy được gọi là tốt nếu và chỉ nếu đồ thị thu được là một cây (liên thông và không có chu trình đơn).
Cho dãy gồm số nguyên không âm đôi một phân biệt. Bạn được phép xoá đi một số phần tử (có thể không xoá phần tử nào) để dãy còn lại trở thành dãy tốt. Hãy tìm số phần tử ít nhất cần xoá.
Có thể chứng minh rằng với mọi dãy, luôn tồn tại cách xoá để dãy còn lại có ít nhất phần tử và là dãy tốt.
Dữ liệu vào
- Dòng đầu chứa số nguyên — độ dài của dãy.
- Dòng thứ hai chứa số nguyên phân biệt .
Dữ liệu ra
- In ra một số nguyên duy nhất — số phần tử ít nhất cần xoá để dãy còn lại là dãy tốt.
Ràng buộc
- Các đôi một phân biệt.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 0 1 5 2 6 |
1 | Dãy không tốt vì không thể đi từ đến trên đồ thị. Xoá phần tử , dãy còn lại là dãy tốt. |
| 7 6 9 8 7 3 5 2 |
2 | Cần xoá ít nhất phần tử để phần còn lại tạo thành cây. |
Bình luận