Hướng dẫn giải của Trên Trung Vị
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
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.
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: Trên Trung Vị
Hướng tiếp cận
Đếm số mảng con có trung vị . Thay vì xét trung vị trực tiếp, ta biến đổi mảng và sử dụng kỹ thuật tiền tố.
Nhận xét quan trọng
- Trung vị của mảng con khi và chỉ khi số phần tử nhiều hơn số phần tử .
- Biến đổi: nếu , nếu .
- Mảng con có trung vị tổng .
- Dùng tiền tố : điều kiện trở thành .
Thuật toán
Đếm số cặp với sao cho .
Tổng số mảng con = . Ta trừ đi số mảng con có tổng âm (tức ).
Duy trì mảng đếm tần suất các giá trị tiền tố đã gặp. Khi xử lý phần tử mới:
- Nếu : tăng , số cặp xấu mới = số tiền tố cũ bằng đúng mới (vì chúng lớn hơn hiện tại).
- Nếu : giảm , số cặp xấu mới = số tiền tố cũ bằng đúng cũ (vì cũ > mới).
Độ phức tạp
- Thời gian:
- Bộ nhớ:
Bình luận