Editorial for CIRCLE
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Nguồn: Free Contest
Sub 
Khi thêm vào đường tròn thì số vùng chỉ tăng thêm đúng
. Vì vậy, đáp án luôn là
.
Sub
còn lại
Khi thêm đường tròn vào mặt phẳng hiện tại thì số vùng tăng lên chỉ
hoặc
. Trường hợp tăng lên
vùng chỉ xảy ra khi tồn tại
tập các đường tròn con kề nhau chia đường tròn cha thành
vùng trên dưới. Vì vậy, mình sẽ sắp xếp các đường tròn tăng dần theo bán kính để đảm bảo khi thêm
đường tròn vào thì các đường tròn con bên trong nó đã thêm vào hết. Gọi
là giao điểm bên trái xa nhất của đường tròn có giao điểm phải với trục Ox là
. Như vậy, khi thêm
đường tròn vào mình sẽ truy vết từ giao điểm phải của đường tròn đó với trục Ox. Nếu truy vết được đến giao điểm bên trái tức là tồn tại
tập các đường tròn con được nói ở trên và đường tròn đang được thêm vào sẽ tăng lượng vùng lên
, ngược lại tăng
. Sau đó cập nhật
cho đường tròn hiện tại. Vì tọa độ
khá lớn nên mình sẽ sử dụng map để lưu trữ.
Độ phức tạp: , vì mỗi đường tròn chỉ được gọi tối đa
lần trong map.
Ngoài ra, có cách sử dụng stack và sweep line xử lí nhanh hơn nhưng đpt chung vẫn là .
Comments