Hướng dẫn giải của Leo Núi
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Lời giải: Leo Núi
Hướng tiếp cận
Sắp xếp tối ưu thứ tự người leo rồi mô phỏng tham lam. Chia người thành hai nhóm theo quan hệ và , sau đó sắp xếp mỗi nhóm theo tiêu chí phù hợp để tối thiểu hoá tổng thời gian.
Nhận xét quan trọng
- Nhóm "nhanh lên, chậm xuống" (): nếu leo lên trước, thời gian chờ trên đỉnh ngắn hơn — nên xếp theo tăng dần.
- Nhóm "chậm lên, nhanh xuống" (): nếu leo xuống trước (sau khi lên xong), thời gian lãng phí nhỏ hơn — nên xếp theo giảm dần.
- Tất cả người trong nhóm đều nên leo trước nhóm .
- Sau khi có thứ tự tối ưu, mô phỏng: duy trì
up_end(thời điểm đường lên rảnh) vàdown_end(thời điểm đường xuống rảnh).
Thuật toán
- Chia người thành hai nhóm: nhóm A () và nhóm B ().
- Sắp xếp nhóm A theo tăng dần, nhóm B theo giảm dần.
- Ghép: tất cả nhóm A trước, nhóm B sau.
- Mô phỏng theo thứ tự đã sắp:
- Người thứ bắt đầu leo lên lúc
up_end. Lên đến đỉnh lúcup_end + U_i. - Người này bắt đầu leo xuống lúc
max(up_end + U_i, down_end). Xuống xong lúcstart_down + D_i. - Cập nhật
up_end += U_i,down_end = start_down + D_i.
- Người thứ bắt đầu leo lên lúc
- Đáp án là
down_endsau khi xử lý tất cả.
Độ phức tạp
- Thời gian:
- Bộ nhớ:
Bình luận