Задание 27 ЕГЭ по информатике · 549B82

Выбор чисел из троекВысокаяКЭС 3.2КЭС 3.3
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки ровно одно число так, чтобы сумма всех выбранных чисел не делилась на k=109 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно.
Даны два входных файла — файл A и файл B. Каждый файл содержит в первой строке количество троек N (1≤N≤1 000 000). Каждая из следующих N строк содержит три натуральных числа, не превышающих 12 000.
Для приведённого в условии примера, если k=5, искомая сумма равна 44. В ответе укажите значение искомой суммы для файла A, затем для файла B. Для обработки файла B нельзя использовать перебор всех возможных вариантов.
Вложенные файлы с исходными данными в предоставленном наборе отсутствуют, поэтому числовые значения ответов для файлов A и B определить невозможно.
1_549B82.zip

Показать ответ
784594; 8819088760
Подсказки (3)
  1. Как хранить максимальную сумму для каждого возможного остатка по модулю 109 после обработки очередного числа троек?
  2. Используйте динамическое программирование: для каждого остатка храните максимальную достижимую сумму. При добавлении числа x новый остаток равен (r+x) mod 109.
  3. Инициализируйте dp[0]=0, остальные значения — минус бесконечностью. Для каждой тройки постройте новый массив: new[(r+x) mod 109]=max(new[(r+x) mod 109],dp[r]+x). После обработки всех троек найдите максимум среди dp[r] при r≠0.
Решение
1. Состояние динамического программирования определяется остатком текущей суммы при делении на 109. Для каждого остатка сохраняется наибольшая возможная сумма.
dp[r]=максимальная сумма с остатком r

2. При обработке очередной тройки перебираем только три варианта выбора. Для каждого прежнего остатка r и числа x из тройки обновляем состояние с новым остатком.
new[(r+x) mod 109]=max(new[(r+x) mod 109], dp[r]+x)

3. После обработки всех троек запрещён остаток 0. Поэтому ответом является максимум среди состояний с остатками от 1 до $108.
max{dp[r]∣1≤r<109}

4. Численные ответы для файлов A и B нельзя вычислить без самих файлов с исходными данными.
Частые ошибки
  • Хранить только одну максимальную сумму и потерять информацию об остатке.
  • Разрешить выбирать несколько чисел из одной тройки или не выбирать ни одного.
  • Включить сумму с остатком 0 в итоговый максимум.
  • Использовать перебор всех вариантов, имеющий экспоненциальную сложность.

Источник: Открытый банк ФИПИ

Похожие задания

27Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 04D7CD27Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 0B12A627Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их…Кластеры точек и звёзд · 0D9B7C27На вход программы поступает последовательность из n целых положительных чисел. Рассматриваются все пары…Программа и описание алгоритма · 195BE627Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 4…Программа и описание алгоритма · 233FD127Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 267752

Нужен репетитор по информатике?

Посмотрите репетиторов, которые ведут занятия в Precettore, или оставьте заявку — подберём сами.

Репетиторы по информатике

Подбор репетитора

Напишите, что нужно, — команда Precettore подберёт репетитора и свяжется с вами.

Готовьтесь к ЕГЭ по информатике в Precettore

Варианты с автопроверкой, домашние задания от репетитора, онлайн-доска и разбор ошибок — в одном кабинете. Регистрация бесплатная.