Top.Mail.Ru

которому среднему арифметическому этих двух чисел. Например, если Петя выбирает числа 3 и 4, то он может заменить их на число 3.5.

Цель игры Пети – превратить массив в отсортированный по возрастанию за наименьшее количество операций. Петя задался вопросом, какое минимальное количество операций он должен сделать, чтобы достигнуть своей цели.

Для решения этой задачи можно использовать динамическое программирование. Мы создадим массив dp длиной плюс один размера и заполним его значениями бесконечности. Здесь dp[i] будет представлять минимальное количество операций, необходимых для превращения первых i элементов массива в отсортированный массив.

Затем мы начнем перебирать элементы массива и для каждого элемента будем находить оптимальное количество операций. Мы будем идти слева направо и для каждого элемента i будем проверять, возможно ли его заменить на среднее арифметическое двух предыдущих элементов. Если это возможно, мы обновляем значение dp[i] равным dp[i-2] + 1, что означает, что мы выполнили операцию и двигаемся на два элемента назад. Если это невозможно, мы просто присваиваем dp[i] значение dp[i-1], что означает, что мы не выполняем операцию и двигаемся на один элемент назад.

В конце мы смотрим на значение dp[p], где p – это размер массива. Это будет минимальное количество операций, необходимых для превращения всего массива в отсортированный массив.

Шаги решения:
1. Создать массив dp длиной плюс один размера и заполнить его значениями бесконечности.
2. Пройти по всем элементам массива.
3. Для каждого элемента проверить, можно ли его заменить на среднее арифметическое двух предыдущих элементов.
4. Обновить значение dp[i] или присвоить dp[i] значение dp[i-1].
5. В конце проверить значение dp[p], где p – это размер массива. Это будет минимальное количество операций.

   
[metform form_id="1136"]