Публикации по теме 'fenwick-tree'


Двоичное индексное дерево
Двоичное индексное дерево или дерево Фенвика — это мощная структура данных для решения проблем, связанных с обновлением диапазона/запросом диапазона или точечным обновлением/запросом диапазона или обновлением диапазона/запросом точки . Здесь мы обсудим это самым простым способом: P. Сегодня мы обсудим самую простую форму точечного обновления/запроса диапазона двоичного индексного дерева. Предположим, у вас есть проблема, когда вам дан массив, и над массивом будут выполняться два..

Вопросы по теме 'fenwick-tree'

Binary Indexed Tree (Дерево Фенвика) — об обновлении
Недавно я изучил структуру данных Дерево Фенвика (двоичное индексированное дерево) . При запросе я могу понять, зачем вычитать (idx и -idx). Однако я не могу понять, зачем добавлять (idx и -idx) при обновлении значения. Другими словами, я...
1591 просмотров
schedule 23.03.2023

Найдите общее количество возрастающих подпоследовательностей длины k [дубликаты]
Предположим, у меня есть массив 1,2,2,10. Возрастающие подпоследовательности длины 3 равны 1,2,4 и 1,3,4 (на основе индекса). Итак, ответ 2. ССЫЛКА на проблему Мне нужно лучшее решение с использованием дерева BIT, которое могло бы улучшить...
765 просмотров
schedule 29.06.2022

Требуется четкое объяснение обновлений диапазона и запросов диапазона Двоичное индексированное дерево
Я прошел несколько руководств по обновлению диапазона - запросы диапазона двоичного индексированного дерева. Я не могу понять ни одного из них. Я не понимаю необходимости строить еще одно дерево. Может ли кто-нибудь объяснить мне это на простом...
2795 просмотров
schedule 10.04.2022

Как эффективно умножить диапазон значений массива на заданное число?
Наивным способом было бы линейное перебор диапазона и умножение на каждое число в диапазоне. Пример: Массив: {1,2,3,4,5,6,7,8,9,10}; Умножьте индекс 3 на индекс 8 с 2. Предположим, что один базовый индекс. Массив результатов должен быть:...
1437 просмотров

Что означает (число и -число) в битовом программировании?
Например: int get(int i) { int res = 0; while (i) { res = (res + tree[i]) % MOD; i -= ( (i) & (-i) ); } return res; } Функция обновления дерева: void update(int i, int val) { while (i <= m) {...
4811 просмотров
schedule 01.02.2023

Можно ли запросить количество различных целых чисел в диапазоне за O (lg N)?
Я прочитал несколько руководств о двух общих структурах данных, которые могут выполнять обновление диапазона и запрос в O (lg N): Дерево сегментов и Двоичное индексированное дерево (BIT/Дерево Фенвика). Большинство примеров, которые я нашел,...
8915 просмотров

Как найти, какая позиция имеет сумму префикса M в BIT?
Предположим, я создал двоичное индексированное дерево с суммой префиксов длины N. Основной массив содержит только 0 s и 1 s. Теперь я хочу найти, какой индекс имеет префиксную сумму M (это означает, что он имеет ровно M 1 s). Как мой массив...
364 просмотров
schedule 07.06.2024

Удалите повторяющиеся элементы и дайте сумму диапазона
У меня есть вопрос относительно уже заданного этого вопроса: БИТ? Что, если я хочу не учитывать повторяющийся элемент при выполнении запроса диапазона? следующий пример: Input Line 1: n (1 ≤ n ≤ 10^6). Line 2: n numbers a1, a2, ..., an...
81 просмотров
schedule 03.06.2023