Содержание
- 2. Немного истории Впервые эта структура была описана Рябко Б.Я. в 1989 году. Полная версия опубликована им
- 3. Что это? Что умеет? О_о Дерево Фенвика – это структура данных, дерево на массиве, обладающее следующими
- 4. Решим задачку! Дан массив a длины N. Поступают запросы: найти сумму на отрезке [L, R] прибавить
- 5. А зачем тут дерево Фенвика? Такую задачу мы уже умеем решать используя дерево отрезков или sqrt-декомпозицию.
- 6. Ну и как оно работает? В дереве Фенвика t[i] отвечает за сумму на отрезке длины len,
- 7. Пояснительная бригада картиночка Пояснительный пример. Рассмотрим t[12]. Максимальная степень двойки, на которую делится 12 – это
- 8. Внимание, вопрос! А как узнать эту самую максимальную степень двойки? Тут несколько вариантов. Ее можно просто
- 9. (Не)много логики
- 10. Ничего непонятно, хочу пример
- 11. ✨Сейчас будет магия✨ Внезапно поговорим об отрицательных числах! Как они выглядят вообще в двоичной записи? Так
- 12. Пример
- 13. А дальше?
- 14. А как так вышло? Разберем все по порядку. Как мы получали отрицательное число? Сначала меняли все
- 15. Нууу… Вроде понятно, но так… в общих чертах Таким образом, t[i] – отвечает за отрезок длины
- 16. А как искать на моем отрезке? Дерево Фенвика умеет искать сумму на префиксе. Тогда сумма на
- 17. Хачу код GetSum То есть на каждом шаге мы добавляем в ответ сумму на отрезке, за
- 18. А изменение элемента??? То есть на каждом шаге мы добавляем x в t[i], а дальше переходим
- 19. А почему?...
- 20. А всегда ли так? Если простыми словами, как выглядит нашл переход. В числе i в конце
- 21. Примерчик Как видим, длина действительно увеличится минимум в 2 раза. Теперь докажем, что каждый следующий отрезок
- 22. Очевидно. Доказательство.
- 23. А почему быстро работает? Рассмотрим функцию GetSum. Как у нас изменяется i на каждом шаге? Если
- 24. А может Update долго работает?
- 25. Выводы Дерево Фенвика работает быстро, занимает мало памяти, пишется быстрее. Также его можно применять в двумерном
- 26. Что почитать? ru.algorithmica.org/cs/range-queries/fenwick/ e-maxx.ru/algo/fenwick_tree neerc.ifmo.ru/wiki/index.php?title=Дерево_Фенвика
- 28. Скачать презентацию