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 , ta có thể duyệt hết tất cả tập con của số, rồi kiểm tra xem tập đó có thỏa mãn hay không (tổng ), sau đó lấy max tổng điểm của các tập thỏa mãn đó.
ĐPT:
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 sao cho thì và .
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 mà bài được chọn, bài không được chọn. Khi đó ta có thể bỏ chọn bài và chọn bài (vì ) và nhận được tổng điểm cao hơn hoặc bằng với điểm trước đó (vì ).
Bài toán của chúng ta trở thành: Với mỗi truy vấn , chúng ta cần tìm chỉ số lớn nhất sao cho . Khi đó đáp án của bài toán là .
Vì , 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:
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 với mỗi truy vấn.
ĐPT:
Comments