Я дал массив размера N. У меня есть Q-запросы. Мне нужно рассчитать gcd между L и R, где LR, где 1 ≤ L ≤ R ≤ N.
Как правильно рассчитать его как грубую силу подход не удастся.GCD между диапазонами
1
A
ответ
1
GCD является аддитивным и коммутативным. Это означает, что дерево сегментов может решить эту проблему с использованием log (N) времени для каждого запроса GCD диапазона.
1
Сегмент дерево может быть использовано для предварительной обработки и запроса в умеренное время. С деревом сегментов время предварительной обработки - O (n), а время для запроса GCD - O (Logn). Требуемое дополнительное пространство - это O (n) для хранения дерева сегментов.
Представление сегментов деревьев
- листьев узлы являются элементы входного массива.
- Каждый внутренний узел представляет собой GCD всех листов под ним.
Массив представление дерева используется для представления сегментов деревьев т.е. для каждого узла с индексом I,
- Левый ребенок имеет индекс 2 * я + 1
- Право ребенка на 2 * я +2, а родительский элемент находится на этаже ((i-1)/2).
Осуществлению можно найти здесь http://www.geeksforgeeks.org/gcds-of-a-given-index-ranges-in-an-array/
Смежные вопросы
- 1. подсчет дат между диапазонами
- 2. Разница между двумя диапазонами
- 3. Действует между диапазонами
- 4. Дифференциация между диапазонами ввода
- 5. Получить значения между диапазонами
- 6. SQL - Показать предложения между диапазонами
- 7. Случайное число между двумя диапазонами
- 8. Сравнивая граничные точки между диапазонами
- 9. Проверка наличия дат между диапазонами
- 10. MYSQL - не между всеми диапазонами
- 11. Петля Javascript между диапазонами дат
- 12. COUNTIF Уникальные даты между диапазонами
- 13. Список всех дат между диапазонами
- 14. Случайное число между двумя диапазонами
- 15. нормализующее число между 2 диапазонами
- 16. сумма натурального числа между диапазонами
- 17. Значение между двумя диапазонами столбцов
- 18. VBA SUMIF между диапазонами дат
- 19. поиск профилей между двумя диапазонами
- 20. Быстрые простые числа между диапазонами
- 21. Сериализация между NSOperationQueue и GCD
- 22. SQL Server: список месяцев между диапазонами
- 23. Excel SUMIFS проверка функции между двумя диапазонами
- 24. Запрос Mysql между 3 диапазонами дат
- 25. Генерации случайного числа между несколькими диапазонами
- 26. SQL Где между диапазонами словарных значений
- 27. Возврат всех дат между несколькими диапазонами дат
- 28. Получить строки между двумя диапазонами дат
- 29. Запрос доступа (ADO) между двумя часовыми диапазонами
- 30. Возвращаемый массив всех совпадений между двумя диапазонами
Что вы делаете со значениями массива? – fjardon
На самом деле GCD достаточно быстр. Можете ли вы дать некоторые недочеты? То есть каковы ожидаемые значения N и Q? –
N = Q = 10^5 ........ – user4447943