Hướng dẫn giải của HILO
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: HILO
Hướng tiếp cận
Ta cần tính tổng số lần "HILO" xuất hiện trong xâu phản hồi, trên tất cả hoán vị, với giá trị bí mật cố định .
Thay vì đếm trực tiếp trên mỗi hoán vị, ta sử dụng kỳ vọng tuyến tính (linearity of expectation): tính kỳ vọng số lần "HILO" trên một hoán vị ngẫu nhiên, rồi nhân với .
Nhận xét quan trọng
Cấu trúc phản hồi: Mỗi hoán vị tạo ra một xâu phản hồi gồm các ký tự "HI" và "LO". Elsie bỏ qua các lần đoán thừa, nên xâu phản hồi thực chất chỉ chứa các giá trị "không bị loại" — những giá trị thu hẹp khoảng chứa .
Chia bài toán: Có giá trị nhỏ hơn (cho "LO") và giá trị lớn hơn (cho "HI"). Xâu phản hồi là một hoán vị xen kẽ giữa "HI" và "LO" với các giá trị không bị loại.
Công thức DP: Định nghĩa = kỳ vọng số "HILO" khi:
- : phản hồi cuối là "LO"; : phản hồi cuối là "HI"
- = số giá trị chưa đoán phía dưới
- = số giá trị chưa đoán phía trên
Thuật toán
Cách 1: DP
Dựa trên trạng thái , ở mỗi bước giá trị tiếp theo (không bị loại) có xác suất là bất kỳ giá trị nào trong giá trị còn lại.
Quan hệ truy hồi:
- : chọn giá trị dưới (chuyển sang trạng thái LO với giá trị dưới) hoặc giá trị trên (chuyển sang HI).
- : nếu phản hồi trước là "HI" và bây giờ chọn giá trị dưới, ta có thêm một "HILO".
Tối ưu bằng prefix sum để đạt .
Cách 2: Công thức đóng
Sử dụng kỳ vọng tuyến tính và phân tích tổ hợp, ta có công thức đóng:
Với :
trong đó là số điều hòa (harmonic number) bậc .
Với hoặc : tất cả phản hồi đều cùng loại ("HI" hoặc "LO"), nên không có "HILO", kết quả là .
Đáp án cuối cùng: .
Kiểm tra với ví dụ
, : , .
Đáp án: . Đúng!
Độ phức tạp
- Thời gian: (tính số điều hòa và giai thừa)
- Bộ nhớ: (bảng nghịch đảo modular)
Bình luận