Có 2 vòng tròn và các trung tâm của chúng được cố định và sẽ được cung cấp làm đầu vào. Sau đó, sẽ có n điểm, các tọa độ x và y trong đó được cho là đầu vào.Đếm tổng số điểm trong 2 vòng tròn
Cuối cùng, sẽ có q truy vấn. Đối với mỗi truy vấn, bán kính của hai vòng tròn (Hãy để chúng là r1 và r2) sẽ được cung cấp. Xuất tổng số điểm trong vòng tròn đầu tiên hoặc vòng tròn thứ hai cho mỗi truy vấn. Một điểm nằm bên trong một vòng tròn nếu khoảng cách từ điểm đến trung tâm nhỏ hơn hoặc bằng bán kính của vòng tròn.
Ràng buộc: n, q < = 10^6 r1, r2 < = 10^7 và cho mỗi tọa độ, | x | và | y | < = 10^6
Tôi đang tìm quá trình tiền xử lý O (nlogn) hoặc O (nlog^2n) và sau đó là thuật toán O (logn) cho mỗi truy vấn. Giải pháp O (n) cho mỗi truy vấn quá chậm. Bất kỳ ý tưởng làm thế nào để crack này?
Tạo hai mảng xếp hạng các điểm theo khoảng cách của chúng. Điều này có O (n log (n)) để phân loại. Sau đó thực hiện tìm kiếm nhị phân trên mỗi truy vấn trong cả hai mảng để tìm điểm cuối cùng trong vòng kết nối tương ứng. Điều này có O (log (n)). –
Nếu một điểm nằm trong cả hai vòng tròn thì nó sẽ được tính hai lần – user2040997