Ghép đôi công chúa
Đề bài
Mô tả
Một vị vua có công chúa, đánh số từ đến . Xung quanh vương quốc có đúng vương quốc láng giềng, cũng đánh số từ đến , mỗi vương quốc có một hoàng tử. Công chúa thứ đưa ra một danh sách các vương quốc mà cô ấy chấp nhận kết hôn với hoàng tử của vương quốc đó.
Nhà vua ghép đôi một cách tham lam, xét lần lượt các công chúa theo thứ tự từ đến :
- Với công chúa thứ , nhà vua chọn vương quốc có chỉ số nhỏ nhất trong danh sách của cô ấy mà hoàng tử chưa bị ghép đôi, rồi gả công chúa cho hoàng tử đó.
- Nếu mọi hoàng tử trong danh sách của công chúa đều đã bị ghép đôi (hoặc danh sách rỗng), công chúa không kết hôn và nhà vua chuyển sang công chúa tiếp theo.
Trước khi bắt đầu quá trình ghép đôi, nhà vua có thời gian thuyết phục đúng một công chúa bổ sung đúng một vương quốc vào danh sách của cô ấy. Vương quốc được thêm phải chưa có sẵn trong danh sách của công chúa đó. Sau khi thêm, quá trình ghép đôi tham lam ở trên được chạy lại từ đầu.
Hãy xác định xem có cách thêm nào làm tăng tổng số cặp kết hôn hay không. Nếu có, in ra một cách bất kỳ; nếu không, thông báo rằng kết quả đã tối ưu.
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 số nguyên là số công chúa và cũng là số vương quốc.
- dòng tiếp theo mô tả danh sách của từng công chúa. Dòng thứ bắt đầu bằng số nguyên là độ dài danh sách, tiếp theo là số nguyên phân biệt theo thứ tự tăng dần, là các chỉ số vương quốc trong danh sách của công chúa .
Dữ liệu ra
Với mỗi bộ dữ liệu:
- Nếu có thể tăng số cặp kết hôn, in ra dòng chứa từ IMPROVE, sau đó một dòng chứa hai số nguyên là chỉ số công chúa và chỉ số vương quốc cần thêm vào danh sách của cô ấy. Nếu có nhiều cách, in ra một cách bất kỳ.
- Ngược lại, in ra một dòng duy nhất chứa từ OPTIMAL.
Ràng buộc
- và
- Tổng trên tất cả các bộ dữ liệu không vượt quá
- Tổng độ dài các danh sách trên tất cả các bộ dữ liệu không vượt quá
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 4 2 2 3 2 1 2 2 3 4 1 3 2 0 0 |
IMPROVE 4 4 IMPROVE 1 1 |
Bộ 1: công chúa 1 lấy hoàng tử 2, công chúa 2 lấy hoàng tử 1, công chúa 3 lấy hoàng tử 3, công chúa 4 không lấy được ai vì hoàng tử 3 đã bị ghép. Thêm vương quốc 4 vào danh sách của công chúa 4 thì cô ấy lấy được hoàng tử 4, số cặp tăng từ 3 lên 4. Bộ 2: cả hai danh sách đều rỗng nên không ai kết hôn, thêm bất kỳ mục nào cũng tạo ra một cặp. |
| 3 3 3 1 2 3 3 1 2 3 3 1 2 3 1 1 1 4 1 1 1 2 1 3 1 4 |
OPTIMAL OPTIMAL OPTIMAL |
Trong cả ba bộ, mọi công chúa đều đã kết hôn nên không thể tăng thêm được nữa. |
Bình luận