Статья Автор: Деникина Н.В., Деникин А.В.

Префиксные суммы

Префиксные суммы

В информатике префиксной суммой последовательности чисел x0, x1, x2, … xn-1 называется последовательность чисел y0, y1, y2, …, yn такая что:
y0 = 0
y1 = x0
y2 = x0 + x1
y3 = x0 + x1+ x2

...

Обратите внимание на то, что yi — это сумма первых i элементов массива x. Другими словами yi — это сумма элементов массива x на полуинтервале [0, i),
 

Рекуррентная формула

Формулу для yi можно записать рекурсивно:

y0 = yi
yi+1 = yi + ai
, для всех i ≥ 0
 

Задача
Дан неизменяемый массив длины n. Вычислить сумму элементов массива на подотрезке с l по r.

Идея решения заключается в том, чтобы сохранить в дополнительный массив сумму всех элементов префиксов последовательности (массив префиксных сумм).  В элемент с индексом 1 - значение суммы элементов префикса длиной 1 (значение первого элемента массива). В элемент с индексом 2 - значение суммы элементов префикса длиной 2 (сумма первого и второго элементов массива) и т.д.
 
входное число   1 2 3 4 5 6 ...
префиксная сумма (prefix) 0 1 3 6 10 15 21 ...

Используя сформированный массив (prefix), можно легко вычислять сумму на отрезке [l; r]: prefix[r+1] - prefix[l], где prefix[r+1] - сумма первых r элементов последовательности, prefix[l] - сумма первых l элементов.последовательности.

Графически эту идею можно изобразить следующим образом: элементы массива находятся в ячейках, а префиксные суммы находятся между ними — на перегородках. И содержат в себе суммы всего того, что находится перед этой перегородкой:

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать