Module: thuật toán tham lam


Problem

1 /9


Formaggio mua panzerotti

Theory Click to read/hide

Thuật toán tham lam là thuật toán mà ở mỗi bước chọn biến thể tối ưu (trong bước hiện tại) với kỳ vọng rằng giải pháp cuối cùng sẽ tối ưu theo nghĩa toàn cục.

Ví dụ nhỏ:
Giả sử chúng ta có vô số đồng xu có mệnh giá khác nhau và chúng ta cần thu thập số tiền S. Hãy xem xét hai trường hợp cụ thể, mỗi trường hợp chúng ta sẽ cố gắng giải quyết bằng thuật toán tham lam.
Cụ thể, chúng tôi sẽ hành động như sau: ở mỗi bước, chúng tôi sẽ lấy một đồng xu có mệnh giá cao nhất (tùy chọn tốt nhất trong bước), không vượt quá số tiền còn lại.

a) Gọi các mệnh giá đồng xu là 1, 5 và 10 và S = 27.
1) Lấy 10, S: 27 -> 17
2) Lấy 10, S: 17 -> 7
3) Lấy 5, S: 7 -> 2
4) Lấy 1, S: 2 -> 1
5) Lấy 1, S: 1 -> 0
Kết quả là họ đã ghi được số tiền là năm xu. Bạn có thể độc lập (ví dụ: bạo lực) đảm bảo rằng với 4 đồng xu trở xuống, bạn sẽ không thể đạt điểm 27.

b) Gọi mệnh giá của các đồng xu là 1, 5 và 7 và S = 24.
1) Lấy 7, S: 24 -> 17
2) Lấy 7, S: 17 -> 10
3) Lấy 7, S: 10 -> 3
4) Lấy 1, S: 3 -> 2
5) Lấy 1, S: 2 -> 1
6) Lấy 1, S: 1 -> 0.
Chúng tôi ghi điểm với sáu đồng xu, nhưng có thể ghi điểm S với bốn đồng xu - hai đồng xu có mệnh giá 7 và hai đồng xu có mệnh giá 5.

Như có thể thấy từ ví dụ, không phải lúc nào cũng có thể giải các bài toán bằng thuật toán tham lam. Nhưng nếu nó dẫn đến một câu trả lời tối ưu tổng thể, thì nó thường sẽ dễ dàng hơn so với việc sử dụng quy hoạch động hoặc các phương pháp khác.

Problem

Formaggio rất thích món panzerotti với nhiều loại nhân khác nhau, và món nào không quá quan trọng. Một lần, trong tình trạng đói cồn cào, Formaggio bước vào một tiệm bánh mì và thấy món panzerotti với cà chua, rau bina và nấm đang được bày bán.
Formaggio muốn mua càng nhiều panzerotti càng tốt, nhưng vấn đề là số lượng panzerotti được bán ra có hạn, cũng như túi tiền của Formaggio.

Hãy giúp Formaggio xác định số lượng panzerotti tối đa mà anh ấy có thể mua.

Đầu vào:
Dòng đầu tiên chứa các số P1, P2 và P3 – chi phí của panzerotti tương ứng với cà chua, rau bina và nấm.
Dòng thứ hai xác định các giá trị N1, N2 và N3 – số lượng panzerotti phù hợp được bán. 
Dòng thứ ba chứa số R – số tiền mà Formaggio có. 
Tất cả các số nhập vào đều là số nguyên dương không vượt quá 10000.

Đầu ra:
In ra một số nguyên - số panzerotti tối đa mà Formaggio có thể mua.

Ví dụ:
 
Đầu vào Đầu ra
5 3 8
2 6 4
23
7