Статья Автор: Лебедев Дмитрий

ЕГЭ_27-24 Разница интервалов. Часть 1

По мотивам задания 27 ЕГЭ-24 (Основная волна 07.06.24) /Источник - Задание № 17538.kompege.ru
Часть 1. Переборное решение (для файла A). Сложность O(N3)
Часть 2. Эффективное решение (для файла B)
Задача . КЕГЭ-27_2024_Основная волна_I


 

Постановк задачи.
(По мотивам задания 27 ЕГЭ-24 (Основная волна 07.06.24) 
 

Пусть S — последовательность из N целых чисел, пронумерованных подряд начиная с 0.
Обозначим S(L, R) подпоследовательность, состоящую из идущих подряд элементов, входящих в S,
начиная с элемента с номером L и заканчивая элементом с номером R.
Ваша задача найти такие значения номеров элементов L, M, R, где \(0\leq L<M<R-1 <N-1 \) 
(т. е. между элементами с номерами M и R есть ещё как минимум один элемент),
чтобы разность суммы элементов подпоследовательноcти S(M+1, R)
и суммы элементов подпоследовательности S(L, М) была максимальна.
В ответе укажите максимальное значение разности подобных сумм.

Входные данные
Дан список целых чисел 
Выходные данные
Ответ на задание: максимально возможное значение sum(S(M+1, R)) - sum(S(L, М)) и значение L,M,R
Если таких наборов L,M,R несколько, то выведите наименьший в лексико-графическом значениии????

 
Items Ожидаемый результат Пояснение
20, 4, -2, 13, -1, 2, -10  12, 1, 2, 5  M может принимать значения от 1 до 4 
Оптимальным оказываются значения 
M=2, R=5 и L=1, тогда значение разности
равно (13+(-1)+2)- (4+(-2))=14-2-12

 


Вычисление заданного значения.
Для проверки решения задания надо написать функцию,
которая по заданным Items, L, M, R
находит необходимое значение разности.
Ваша задача написать  функцию, которая получает
список Items, значения L, M, R, где \(0\leq L<M<R-1 <len(Items)-1 \)
и возвращает sum(S(M+1, R)) - sum(S(L, М))
Сложность такого решения составляет O(N),  где N - кол-во элементов в последовательности.
Пусть это будет функция def f_LMR(Items,L,R,M)
В следующем окне напишите свой код и введите длины списка,
программа сгенерирует случайный список чисел, значения L,M,R 
и выведет ответы
 



Переборное решение. Алгоритм
Вычислить конкретное значение можно с помощью одного оператора, использующего метод sum 
Организовать переборное решение можно простым перебором всех возможных значений L,M,R 
и вычислением  значения для выбранной тройки. Сложность такого решения будет O(N4),
где N - размер списка.
Сложность можно понизить до O(N3), если использовать префиксные суммы.
Тогда вычисление конкретного значения будет O(1)
Пусть Items - список со значениями, N=len(Items). Определим список P_items, положив:
  • P_items[0]=0
  • P_items[L]=sum(Items[:L])
Тогда sum(S(L,R))=P_items[R+1]-P_items[L]
В следующем фрагменте представлено переборное решение.
Для заданного N, программа генерирует случайный набор чисел размера N (числа по модулю не превосходят 100)
вычисляет ответ. Также выводит процессорное время работы программы


Переборное решение подходит для файла А, в котором всего 311 значений,
но уже для списка из 600 элементов ему требуется более 10 секунд процессорного времени.
В части 2 будет предложен способ, позволяющий решить задание со сложностью O(N)
 

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