Олимпиадный тренинг

Задача . F. Сделай палиндром


Задан массив \(a\), состоящий из \(n\) целых чисел.

Скажем, что результат функции \(f(b)\) — минимальное количество операций, чтобы сделать массив \(b\) палиндромом. Операции, которые вы можете выполнять — следующие:

  • выбрать два соседних элемента \(b_i\) и \(b_{i+1}\), удалить их и заменить одним элементом, равным \((b_i + b_{i + 1})\);
  • или выбрать элемент \(b_i > 1\), удалить его и заменить двумя положительными целыми числами \(x\) и \(y\) (\(x > 0\) и \(y > 0\)) такими, что \(x + y = b_i\).

Например, из массива \(b=[2, 1, 3]\) за одну операцию можно получить следующие массивы: \([1, 1, 1, 3]\), \([2, 1, 1, 2]\), \([3, 3]\), \([2, 4]\) или \([2, 1, 2, 1]\).

Посчитайте \(\displaystyle \left(\sum_{1 \le l \le r \le n}{f(a[l..r])}\right)\), где \(a[l..r]\) — подотрезок массива \(a\) с \(l\)-й по \(r\)-ю позиции включительно. Другими словами — сумму значений функции \(f\) для всех подотрезков массива \(a\).

Входные данные

Первая строка содержит одно целое число \(t\) (\(1 \le t \le 1000\)) — количество наборов входных данных.

Первая строка каждого набора содержит одно целое число \(n\) (\(1 \le n \le 2000\)).

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^5\)).

Дополнительные ограничения на входные данные: сумма \(n\) по всем наборам входных данных не превосходит \(2000\).

Выходные данные

Для каждого набора выведите одно целое число — сумму значений функции \(f\) для всех подотрезков массива \(a\).


Примеры
Входные данныеВыходные данные
1 4
3
2 1 3
4
1 1 1 1
5
4 2 3 1 5
4
1 2 1 2
3
0
14
5

time 5000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя