¿Qué algoritmo debo usar en este problema de geometría?

Para los rectángulos, mi idea sería hacer una compresión de coordenadas y luego usar alguna estructura de datos como un árbol de rango 2D.

Pero para los círculos las cosas se vuelven más complicadas. Una idea que me viene a la mente es imaginar los círculos como rectángulos y usar la misma idea que antes pero, en lugar de simplemente “aceptar”, uno necesita verificar para cada uno de los círculos candidatos que el punto reside en él. Pero, desafortunadamente, esta solución puede ser lineal para cada punto.

Entonces, intentemos otro enfoque (suponiendo que podamos responder “sin conexión”):
En lugar de preguntar cuántos círculos contienen un punto, hacemos lo contrario. Es decir, para cada círculo actualizamos la respuesta de cada punto dentro de ese círculo.
Una implementación simple de esta idea no resultará en una mejor complejidad que antes, pero si usamos alguna estructura de datos como un Árbol de Rango 2D o un Quadtree y … “propagación diferida”, podemos lograr una mejor complejidad. (Necesita una implementación muy cuidadosa)

¡Espero que haya sido útil!

More Interesting

Para aprender la codificación, ¿primero se debe aprender un lenguaje o algoritmos?

¿Es bueno analizar?

¿Cuál es el problema conmigo si puedo decir cómo funciona el algoritmo pero no puedo escribir el programa para el mismo? ¿Cómo puedo deshacerme de él? ¿Por favor ayuda?

¿Alguien puede ayudarme a entender cómo funciona este código?

¿Cuán específicamente la memoria de la clase de almacenamiento cambiará las arquitecturas, los ecosistemas (incluidas las opciones de lenguaje de programación) y los algoritmos para big data?

En el software de servidor web, ¿alguna vez se prefiere la ordenación en lugar de la clasificación rápida, porque un ataque DoS podría desencadenar el comportamiento de clasificación rápida en el peor de los casos?

¿Cuál es la diferencia entre un algoritmo genético y un algoritmo de escalador?

¿Aproximadamente cuánto más rápido es el GCD binario que el algoritmo euclidiano para la aritmética de precisión fija en las computadoras actuales?

Ahora que los bitcoins son famosos y caros, ¿cómo reaccionaría el mercado ante un clon de Bitcoin que utiliza un algoritmo, tecnología, etc. idénticos?

¿Se puede ordenar una lista de números en un número menor de pases que el indicado por la notación Big-O?

¿En qué se diferencia una tabla hash de una lista vinculada o una matriz?

¿Podría alguien ayudarme con el problema del algoritmo 'Intervalo casi ordenado'?

¿Cuál es la complejidad temporal del algoritmo de búsqueda binaria?

¿Por qué usar un diagrama de flujo es una mala práctica en la programación?

¿Cómo resolvemos el problema B, 'Can of Worms', del Chicago Invitational Programming Contest 2013?