Skip to content

Editorial for Truy vấn

Truy vấn

Problem code: olpicpc042c10d Group: Uncategorized Points: 2,500 pointspartial
Limits
3.0 s, 512 MB
AC rate
11.5%
Solvers
6
Read the editorial only when you are stuck, and do not copy code from it. Please respect the problem author and the editorialist: submitting an official solution before solving the problem yourself is a bannable offence.

Subtask 1: Ta đơn giản thực hiện lần lượt các truy vấn và tính kết quả.

Độ phức tạp: O(QN)

Subtask 2: Với việc chỉ có truy vấn loại 2 (cập nhật đoạn) và truy vấn loại 3 (truy vấn đoạn), ta chỉ cần sử dụng cấu trúc Segment Tree kết hợp kỹ thuật Lan truyền lười nhác (Lazy Propagation) để xử lý.

Độ phức tạp: O(Nlog(N)+Qlog(N))

Subtask 3: Ta có nhận xét rằng với mỗi giá trị A_i, nếu không có truy vấn loại 2 thì việc thực hiện truy vấn loại 1 trên giá trị A_i này không vượt quá \log(A_i) lần. Khi đó, mỗi nút của cây phân đoạn sẽ được cập nhật không quá \log(10^5) \approx 17 lần.

Độ phức tạp: O(Nlog(N)+Qlog(N)log(c))

Subtask 4: Ta có thể sử dụng kỹ thuật Lazy Propagation cho thao tác loại 1. Trong quá trình cập nhật tại nút j của cây, nếu toàn bộ phần tử tại nút j đều bằng 0 thì ta dừng việc cập nhật. Ngoài ra, nếu toàn bộ phần tử tại nút j đều mang cùng giá trị a thì ta tiến hành cập nhật giá trị \lfloor \frac{a}{x} \rfloor cho toàn bộ phần tử tại nút j và dừng việc cập nhật.

Độ phức tạp: O(Nlog(N) + Qlog(N)log(c))

Comments