¿Cuál es la diferencia entre la descomposición de raíz cuadrada y el algoritmo de MO?

La descomposición de la raíz cuadrada es una técnica general, mientras que el algoritmo de Mo es una implementación específica. También podría implementar la descomposición sqrt de otras maneras, por ejemplo, agrupando las consultas en lugar de la matriz.

Problema Te dan una matriz y tienes dos operaciones.

  1. Agregue algún valor a alguna posición de la matriz
  2. Consultar la suma de elementos en el rango [L, R]

Este es un problema estándar que puede resolver fácilmente usando la descomposición de raíz cuadrada dividiendo la matriz en bloques sqrt y manteniendo una suma de bloques para cada uno.

Por otro lado, el algoritmo de Mo es un tipo más específico de descomposición sqrt. Es aplicable solo cuando no hay actualizaciones. Se trata de asignar las consultas a los depósitos en función del depósito de los índices de la izquierda y luego ordenarlos en los índices de la derecha. En realidad, hay una variación del algoritmo de Mo que también puede manejar actualizaciones en la complejidad del tiempo O (n ^ (5/3)).

More Interesting

¿Es la programación una superpotencia? ¿Por qué o por qué no?

¿Cómo se puede resolver este problema mediante la búsqueda binaria, Shil y la fábrica de juguetes?

¿Son las estructuras de datos y los requisitos previos de algoritmos para la arquitectura y organización de computadoras en un curso típico de CS? Estoy aprendiendo por mi cuenta, ¿cuál debería aprender primero? ¿Puedo aprenderlos en paralelo?

¿Cuál es el enfoque para resolver Gráficos Chef y Bipartitos?

¿Qué es un buen algoritmo para las respuestas de la prueba de personalidad?

¿Por qué es 5n + 8n ^ 2 + 100n ^ 3 = O (n ^ 4)?

¿Qué es mejor si necesito elegir un camino para mi carrera, algoritmos y estructuras de datos, o tecnologías de big data, en las que estoy trabajando actualmente?

¿Cómo se ve el algoritmo del juego Plague?

¿Cuál es la diferencia entre recursividad e iteraciones brevemente?

¿Existe un algoritmo de tiempo O (N) para esta pregunta?

¿Se utiliza una estructura de datos de pila para algoritmos multirecursionales?

¿Está bien inicializar una matriz que contiene fracciones en c ++?

¿Cuál es la forma más efectiva de aprender algoritmos?

La mayoría de las definiciones / teoremas / ejemplos de privacidad diferencial que he encontrado son para consultas que devuelven un solo número por columna, como un promedio. ¿Existen mecanismos diferencialmente privados para otros tipos de consultas, como los que subconjustan filas en función de algún criterio?

¿Cuáles son algunos ejemplos del mundo real de máquinas simples?