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