Editorial for Chạy deadline


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Subtask 1

Với n,q20, ta có thể duyệt hết tất cả tập con của n số, rồi kiểm tra xem tập đó có thỏa mãn hay không (tổng tix), sau đó lấy max tổng điểm của các tập thỏa mãn đó.

ĐPT: O(q2n)

Subtask 2

Nếu bài toán không cho dữ kiện gì thêm, thì việc tìm đáp án tối ưu sẽ rất khó. Tuy nhiên, chúng ta để ý một điều kiện ở đề bài:

với mỗi cặp (i,j) sao cho ij thì titjvivj.

Chúng ta có thể suy ra được từ điều kiện trên phương án tối ưu của Tèo là chọn làm các bài tập đầu tiên.

Chứng minh cũng khá đơn giản, giả sử tồn tại cặp (i,j) (ij) mà bài j được chọn, bài i không được chọn. Khi đó ta có thể bỏ chọn bài j và chọn bài i (vì titj) và nhận được tổng điểm cao hơn hoặc bằng với điểm trước đó (vì vivj).

Bài toán của chúng ta trở thành: Với mỗi truy vấn i, chúng ta cần tìm chỉ số u lớn nhất sao cho j=1utjxi. Khi đó đáp án của bài toán là j=1uvj.

n,q103, nên việc duyệt từ trái sang phải với mỗi truy vấn dễ dàng qua subtask này.

ĐPT: O(qn)

Subtask 3

Thay vì duyệt từ trái sang phải, ta có thể dùng kỹ thuật chặt nhị phân để giải quyết bài toán trong O(log2n) với mỗi truy vấn.

ĐPT: O(qlog2n)


Comments

Please read the guidelines before commenting.


There are no comments at the moment.