Hướng dẫn giải của Mua Quà
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: Mua Quà
Hướng tiếp cận
Vì chỉ có một phiếu giảm giá, ta thử dùng phiếu cho từng món quà một. Với mỗi lựa chọn món được giảm giá, ta tham lam mua thêm các món còn lại rẻ nhất trong ngân sách còn lại.
Nhận xét quan trọng
- Tổng chi phí một món là . Với món được giảm giá, chi phí là .
- Để tối đa số món mua được, sau khi dùng phiếu cho một món, ta nên mua các món còn lại theo thứ tự tổng chi phí tăng dần (tham lam).
- Vì , ta có thể thử dùng phiếu cho từng món và tính kết quả trong mỗi lần.
Thuật toán
- Tính tổng chi phí cho mỗi món.
- Sắp xếp các món theo tăng dần.
- Với mỗi món từ 0 đến (thử dùng phiếu cho món ):
- Chi phí của món khi dùng phiếu: .
- Duyệt các món theo thứ tự đã sắp xếp: bỏ qua món , mua lần lượt từ rẻ đến đắt cho đến khi hết ngân sách.
- Lưu số món mua được.
- Lấy kết quả tốt nhất trong tất cả các thử nghiệm.
Độ phức tạp
- Thời gian:
- Bộ nhớ:
Bình luận