Bài Toán Phân Công
Đề bài
Mô tả
Có công nhân và công việc. Mỗi công nhân phải thực hiện đúng một công việc, và mỗi công việc phải được giao cho đúng một công nhân.
Chi phí để công nhân thực hiện công việc là . Hãy tìm cách phân công có tổng chi phí nhỏ nhất và in ra cách phân công đó.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số công nhân, cũng là số công việc.
- dòng tiếp theo, dòng thứ chứa số nguyên là chi phí để công nhân thực hiện từng công việc.
Dữ liệu ra
- Dòng đầu in tổng chi phí nhỏ nhất.
- dòng tiếp theo, mỗi dòng in hai số nguyên và cho biết công nhân được giao công việc . Mỗi công nhân và mỗi công việc phải xuất hiện đúng một lần, và tổng chi phí của cách phân công in ra phải đúng bằng số ở dòng đầu.
Các dòng phân công có thể in theo thứ tự bất kỳ. Nếu có nhiều cách phân công cùng đạt chi phí nhỏ nhất, in ra một cách bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 17 8 16 9 7 15 12 19 6 9 10 11 14 7 13 10 |
33 1 4 2 1 3 3 4 2 |
Công nhân 1 nhận việc 4 (chi phí 9), công nhân 2 nhận việc 1 (7), công nhân 3 nhận việc 3 (10), công nhân 4 nhận việc 2 (7). Tổng là 33. |
| 2 1 2 1 100 |
3 1 2 2 1 |
Nếu công nhân 1 chọn việc rẻ nhất của mình là việc 1 (chi phí 1) thì công nhân 2 buộc phải nhận việc 2 với chi phí 100, tổng là 101. Nhường việc 1 cho công nhân 2 thì tổng chỉ còn . |
Bình luận