Editorial for Hai đoạn không giao nhau
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.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtask 1: Ta đơn giản kiểm tra từng cặp với
.
Độ phức tạp:
Subtask 2: Ta tiến hành đếm số lượng cặp thỏa mãn đoạn thứ
và đoạn thứ
là hai đoạn giao nhau.
Với mỗi đoạn , tiến hành đếm số đoạn
giao với đoạn
. Dễ dàng nhận thấy rằng với
, để đoạn
giao với đoạn
thì
phải thỏa mãn
, thêm vào đó do
nên
. Từ đó, ta có thể dễ dàng đếm được số đoạn
bằng cách xây dựng mảng
với
là số lượng đoạn
thỏa mãn
và
.
Độ phức tạp:
Subtask 3: Tượng tự subtask , ta tiến hành đếm số lượng cặp
thỏa mãn đoạn thứ
và đoạn thứ
là hai đoạn giao nhau. Có thể tiến hành bằng kỹ thuật Sweep Line.
- Gọi các sự kiện dưới dạng
. Với mỗi đoạn
, ta xây dựng hai sự kiện
và
.
- Sắp xếp các sự kiện theo tăng dần giá trị
, nếu có cùng giá trị
, sắp xếp ưu tiên sự kiện có
nằm trước sự kiện có
.
- Duy trì một biến
để đếm số đoạn, ban đầu
.
- Duyệt qua các sự kiện. Tại sự kiện thứ
, nếu
thì số đoạn giao với đoạn tạo nên sự kiện
là
, sau đó tăng giá trị
, ngược lại nếu
thì giảm giá trị
.
Độ phức tạp:
Comments