คุณจะได้รับลำดับของการร้องขอหน่วยความจำและขนาดแคช คุณต้องส่งคืนจำนวนแคชที่น้อยที่สุดที่เป็นไปได้ภายใต้กลยุทธ์การแทนที่แคชใด ๆ
กลยุทธ์ที่ดีที่สุดคืออัลกอริทึมของ Beladyซึ่งคุณสามารถใช้ได้หากคุณต้องการ
ระบบแคชทำงานดังนี้แคชเริ่มว่างเปล่า คำขอหน่วยความจำเข้ามาหากคำขอขอชิ้นส่วนของข้อมูลในแคชทั้งหมดเป็นอย่างดี ถ้าไม่คุณจะได้รับแคช ณ จุดนี้คุณสามารถแทรกข้อมูลที่ถูกร้องขอลงในแคชเพื่อใช้ในอนาคต หากแคชเต็มและคุณต้องการแทรกข้อมูลใหม่คุณต้องขับไล่ข้อมูลที่เคยอยู่ในแคชก่อนหน้านี้ คุณไม่สามารถแทรกข้อมูลที่ไม่ได้อยู่ในแคช
เป้าหมายของคุณคือค้นหาจำนวนแคชที่น้อยที่สุดเท่าที่จะเป็นไปได้สำหรับลำดับการร้องขอหน่วยความจำและขนาดแคชที่กำหนด
คุณจะได้รับขนาดแคชจำนวนเต็มบวกและลำดับคำขอหน่วยความจำซึ่งเป็นรายการของโทเค็น โทเค็นเหล่านี้สามารถเป็นโทเค็นแบบใดก็ได้ที่คุณต้องการตราบใดที่มีโทเค็นที่แตกต่างกันอย่างน้อย 256 ตัวเป็นไปได้ (ไบต์นั้นใช้ได้ ตัวอย่างเช่น ints, สตริง, รายการทั้งหมดเป็นเรื่องปกติ ขอคำชี้แจงหากจำเป็น
กรณีทดสอบ:
3
[5, 0, 1, 2, 0, 3, 1, 2, 5, 2]
6
ดูวิกิพีเดียสำหรับนโยบายการเปลี่ยนที่ประสบความสำเร็จ
2
[0, 1, 2, 0, 1, 0, 1]
3
เพียงหลีกเลี่ยงการเพิ่ม2
ลงในแคช
3
[0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4]
9
วิธีการหนึ่งเพื่อให้บรรลุนี้โดยไม่เคยขี้บ่น0
และ2
และขี้บ่น1
โดยเร็วที่สุดเท่าที่เป็นไปได้หลังการใช้งานเป็นครั้งสุดท้าย
เกณฑ์การให้คะแนน: นี่คือรหัสกอล์ฟ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ