Supongo que el rectángulo debe ser paralelo al eje. De lo contrario, parece que las cosas se ponen un poco más complicadas.
Es más fácil comenzar resolviendo la versión dinámica de este problema en 1 dimensión. Para hacerlo, necesita una estructura de datos que pueda soportar las siguientes operaciones en tiempo O (log N)
1) Insertar un punto
2) Eliminar un punto
3) Encuentre el número máximo de puntos en algún rango de longitud a (donde ‘a’ es una constante)
La versión dual de estas operaciones es más fácil de implementar directamente. En lugar de insertar / eliminar un punto, debería admitir sumar / restar de un rango de longitud ‘a’. Entonces (3) es solo encontrar el punto máximo. Use su estructura de datos de árbol favorita con actualizaciones diferidas para implementar esto.
- ¿Cómo se ve este conjunto de datos en el espacio tridimensional?
- ¿Cuál es el lugar geométrico de los puntos medios de los acordes de una elipse que tienen un ángulo recto en el centro de la elipse?
- Cómo dividir la L en dos partes de igual área
- Se inscribe un círculo en el triángulo equilátero ABC, de modo que el punto D se encuentra en t AC, el punto E en AB y el punto F en BC. Si el segmento de línea AB = 6, ¿cuál es el área de la figura creada por los segmentos de línea AD, AE y el arco menor DE?
- ¿Cuál es la conclusión del proyecto cuadrilátero?
Una vez que tenga esta estructura de datos 1D, puede aplicarla para resolver el caso 2D en tiempo O (N log N). Simplemente escanee la primera dimensión con una ventana de tamaño ‘a’. Cada vez que ingresa un nuevo punto en la ventana, agréguelo a la estructura de datos y cuando salga, retírelo de la estructura de datos. La respuesta máxima es el mayor número de puntos en una ventana de tamaño ‘b’ en su estructura de datos en cualquier momento en el algoritmo.