Hướng dẫn cho TLEoj Contest #06 - Bộ ba tổng


Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.

Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.

Authors: flo

Subtask 1: n\le 200

Tutorial

Ta xét tất cả bộ ba i,j,k xem i+j+k có bằng m không. Độ phức tạp: O(n^3)

Subtask 2: n\le 2000

Tutorial

Với mọi m,i,j, ta có thể xác định giá trị k=m-i-j. Ta chỉ cần kiểm tra 1\le k\le n.

Vì vậy ta có thể xét từng bộ đôi i,j, sau đó gọi k=m-i-j và kiểm tra. Độ phức tạp: O(n^2)

Subtask 3: Không có ràng buộc gì thêm

Tutorial

Với mọi i, ta gọi l là giá trị j nhỏ nhất sao cho tồn tại nghiệm k thỏa mãn k=m-i-j; 1\le k\le n, r là giá trị j lớn nhất thỏa mãn k=m-i-j; 1\le k\le n. Cả 2 giá trị này đều có thể tìm trong O(1)

Ta có thể xét từng giá trị 1\le i\le n và tìm 2 giá trị l,r. Trường hợp có nghiệm 1\le j\le n thỏa mãn k=m-i-j; 1\le k\le n thì ta tìm 2 giá trị l,r. Khi đó có r-l+1 nghiệm j thỏa mãn. Độ phức tạp: O(n)



Bình luận

Không có bình luận nào.