Editorial for Tổng giá trị nhỏ nhất
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtask 1: Ta đơn giản duyệt qua từng đoạn và tính giá trị nhỏ nhất của đoạn đó. Độ phức tạp: .
Subtask 2: Với mỗi đoạn, sử dụng cấu trúc dữ liệu truy vấn đoạn (Segment Tree, BIT,...) để tính giá trị nhỏ nhất của đoạn đó. Độ phức tạp: .
Subtask 3: Với mỗi (
), ta tiến hành tính
là số đoạn
có giá trị nhỏ nhất là
. Đáp án của bài toán là tổng các giá trị
với mọi
. Với mỗi chỉ số
, ta cần tính hai giá trị
và
:
là số lớn nhất thỏa mãn
và
là số nhỏ nhất thỏa mãn
và
Khi đó, các đoạn có giá trị nhỏ nhất là
sẽ thỏa mãn
và
. Từ đó,
.
Việc tính toán các giá trị và
có thể thực hiện theo thứ tự tăng dần các giá trị
. Ta xây dựng một cấu trúc dữ liệu (Set, Segment Tree,...) để lưu trữ các vị trí
của giá trị
(lưu ý rằng
). Với mỗi
, sử dụng phương pháp tìm kiếm nhị phân để tìm hai giá trị lân cận của
trong cấu trúc dữ liệu, hai giá trị đó chính là
và
cần tính.
Độ phức tạp:
Comments