Bạn sẽ được cung cấp một chuỗi các yêu cầu bộ nhớ và kích thước bộ đệm. Bạn phải trả lại số lần nhớ cache ít nhất có thể theo bất kỳ chiến lược thay thế bộ đệm nào.
Một chiến lược tối ưu là thuật toán của Belotti , mà bạn có thể sử dụng nếu muốn.
Một hệ thống bộ đệm hoạt động như sau: Bộ đệm bắt đầu trống. Yêu cầu bộ nhớ đến. Nếu yêu cầu yêu cầu một phần dữ liệu trong bộ đệm, tất cả đều ổn. Nếu không, bạn phải chịu một lỗi nhớ cache. Tại thời điểm này, bạn có thể chèn dữ liệu được yêu cầu vào bộ đệm để sử dụng trong tương lai. Nếu bộ đệm đã đầy và bạn muốn chèn dữ liệu mới, bạn phải xóa dữ liệu trước đó trong bộ đệm. Bạn không bao giờ có thể chèn dữ liệu không chỉ trong bộ đệm.
Mục tiêu của bạn là tìm ra số lượng bộ nhớ cache tối thiểu có thể có cho một chuỗi yêu cầu bộ nhớ nhất định và kích thước bộ đệm.
Bạn sẽ được cung cấp kích thước bộ đệm, số nguyên dương và chuỗi yêu cầu bộ nhớ, là danh sách các mã thông báo. Các mã thông báo này có thể là bất kỳ loại mã thông báo nào bạn thích, miễn là có ít nhất 256 mã thông báo khác nhau (byte là tốt, bool thì không). Ví dụ, ints, chuỗi, danh sách đều ổn. Yêu cầu làm rõ nếu cần.
Các trường hợp thử nghiệm:
3
[5, 0, 1, 2, 0, 3, 1, 2, 5, 2]
6
Xem wikipedia để biết chính sách thay thế đạt được điều này.
2
[0, 1, 2, 0, 1, 0, 1]
3
Đơn giản chỉ cần tránh thêm 2
vào bộ đệm.
3
[0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4]
9
Một cách để đạt được điều này là không bao giờ đuổi 0
và 2
và đuổi 1
càng sớm càng tốt sau lần sử dụng cuối cùng.
Ghi điểm: Đây là mã golf. Ít byte nhất sẽ thắng.