Недавно начал изучать такую структуру данных как дерево Фенвика.
И вот столкнулся с такой задачей,как прибавление какого то числа на отрезке.
Не мог ли бы кто то из вас,помочь мне с этой задачей?
Проблема в том что я не знаю,как именно это реализовать за нормальную асимптотику.
Не думаю что здесь так же будет обещание как и в дереве отрезков
http://petr-mitrichev.blogspot.ru/2013/05/fenwick-tree-range-updates.html
большое спасибо!
Ко нибудь может объяснить почему этот код
https://ideone.com/zf1KRe
работает,для задачи прибавить на отрезке и узнать значение элемента. Почему когда узнаем нужно
get(x)
,а неget(x) - get(x-1)
?Объясните пожалуйста как он ведет себя для этой задачи?
Полный текст задачи: Задача D
Вместо того, чтобы поддерживать массив a, будем поддерживать массив b, такой, что b[i] = a[i]-a[i-1] (считаем, что a[-1] = 0), тогда a[i] = b[0]+b[1]+...+b[i], а операция прибавления на отрезке [l, r] меняет только b[l] и b[r+1].
При прибавлений на отрезке мы делаем t[l] += x, t[r + 1] -= x. Теперь, что бы найти t[x], нам надо найти сумму от 1 до t[x]. Ненужные отрезки сами будут исключаться.