Bộ nhớ đệm LRU

Đề bài

Mô tả

Một máy chủ lưu trữ n đoạn video, tất cả có cùng kích thước. Máy chủ dùng một bộ nhớ đệm (cache) áp dụng thuật toán LRU (Least Recently Used): cache chứa tối đa k video và ban đầu rỗng.

Mỗi khi một video được truy vấn:

  • Nếu video đã có trong cache thì giữ nguyên (chỉ cập nhật thời điểm truy vấn gần nhất của nó).
  • Nếu chưa có, video được đưa vào cache. Nếu sau đó cache chứa nhiều hơn k video, video ít được dùng gần đây nhất (video có thời điểm truy vấn gần nhất là sớm nhất) sẽ bị loại bỏ.

Mỗi lần một người dùng truy cập máy chủ, họ chọn video i với xác suất pi, độc lập với mọi lần truy cập trước đó.

Cần tính, với mỗi video, xác suất nó nằm trong cache sau 10100 lần truy vấn.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk — số lượng video và dung lượng cache.
  • Dòng thứ hai chứa n số thực pi — xác suất chọn video thứ i, mỗi số có không quá hai chữ số sau dấu phẩy.

Đảm bảo tổng tất cả pi bằng 1.

Dữ liệu ra

In ra n số thực, số thứ i là xác suất video thứ i nằm trong cache sau 10100 lần truy vấn.

Đáp án được chấp nhận nếu sai số tuyệt đối hoặc tương đối so với đáp án đúng không vượt quá 106.

Ràng buộc

  • 1kn20
  • 0pi1, tổng pi=1

Ví dụ

Input Output Giải thích
3 2
0.3 0.2 0.5
0.6750000000 0.4857142857 0.8392857143 Cache chứa được 2 video. Sau rất nhiều truy vấn, cache gần như luôn giữ 2 video được truy cập gần đây nhất.
3 1
0.3 0.2 0.5
0.3000000000 0.2000000000 0.5000000000 Với k=1, cache chỉ giữ video vừa được truy cập, nên xác suất mỗi video nằm trong cache đúng bằng pi.
3 3
0.2 0.3 0.5
1.0000000000 1.0000000000 1.0000000000 Cache đủ chỗ cho cả 3 video nên cuối cùng chúng đều nằm trong cache.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0