Bỏ qua đến nội dung

Hướng giải: Vũ điệu của đàn bò

Vũ điệu của đàn bò

Mã bài: binarysearch03 Nhóm: Uncategorized Điểm: 3.000 điểm
Giới hạn
1,0 s, 256 MB
Tỉ lệ AC
26,9%
Người giải
7
Chỉ đọc hướng giải khi bế tắc và đừng sao chép mã trong đó. Hãy tôn trọng người ra đề và người viết hướng giải: nộp lời giải chính thức khi chưa tự giải được bài có thể khiến bạn bị khóa tài khoản.

Tiến hành tìm kiếm nhị phân cho đáp án của bài toán. Với mỗi giá trị k, cần kiểm tra xem tổng thời gian biểu diễn có vượt quá t_{max} hay không.

Trong số các con bò đang biểu diễn trên sân khấu, ta cần tìm ra con bò có thời gian biểu diễn ngắn nhất để tiến hành thay thế con bò tiếp theo vào. Có thể sử dụng cấu trúc Hàng đợi ưu tiên (Priority Queue) để xử lý nhanh thao tác tìm và thêm con bò phù hợp.

Ban đầu, thêm các con bò có chỉ số 1,2,...,k vào Hàng đợi ưu tiên và tổng thời gian biểu diễn t=0. Duyệt qua với mỗi chỉ số k+1,...,n:

  • Để thêm con bò thứ i vào hàng đợi, trước tiên cần tìm và loại bỏ một con bò có thời gian biểu diễn ngắn nhất khỏi hàng đợi tương ứng, đồng thời cập nhật t=top với top là phần tử được loại bỏ khỏi hàng đợi. Sau đó, thêm con bò thứ i với giá trị d_i+t vào hàng đợi.

Lưu ý sau khi hoàn thành thêm toàn bộ n con bò vào hàng đợi, cần xử lý loại bỏ các con bò cho đến khi hàng đợi rỗng và cập nhật tổng thời gian biểu diễn t.

Độ phức tạp: O(n.log^2(n)).

Bình luận