Nối dây thừng
Xem dạng PDF
Gửi bài giải
Điểm:
600,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
Bạn có ~N~ sợi dây thừng với độ dài khác nhau. Bạn cần nối tất cả chúng lại thành một sợi dây thừng duy nhất. Mỗi lần nối 2 sợi dây, chi phí bạn phải bỏ ra bằng tổng độ dài của 2 sợi dây đó.
Hãy tìm cách nối sao cho tổng chi phí bỏ ra là nhỏ nhất.
Dữ liệu
- Dòng đầu tiên chứa số nguyên dương ~N~ (~1 \le N \le 10^5~).
- Dòng thứ hai chứa ~N~ số nguyên dương ~L_1, L_2, ..., L_N~ (~1 \le L_i \le 10^6~) là độ dài của các sợi dây thừng.
Kết quả
In ra một số nguyên duy nhất là tổng chi phí nối dây thừng nhỏ nhất. (Lưu ý: Kết quả có thể vượt quá giới hạn số nguyên 32-bit, hãy sử dụng kiểu dữ liệu 64-bit).
Ví dụ
Input
4
4 3 2 6
Output
29
Giải thích
- Bước 1: Chọn 2 sợi ngắn nhất là
2và3để nối. Chi phí = 5. Các sợi dây còn lại:[4, 6, 5]. - Bước 2: Chọn 2 sợi ngắn nhất là
4và5để nối. Chi phí = 9. Các sợi dây còn lại:[6, 9]. - Bước 3: Nối 2 sợi cuối cùng
6và9. Chi phí = 15. Còn 1 sợi duy nhất. - Tổng chi phí = 5 + 9 + 15 = 29.
Bình luận