Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 
Вернуться
Тема: У меня просьба. Пожалуйста, подскажите алгоритм решения задачи 1594 (Тренировочные олимпиады --> C. Марсианский язык). Просто у меня схожая задача была и на областной олимпиаде (в Киеве), а я понятия не имею, как её решать. Заранее спасибо.
1
  1  Меньшиков Фёдор Владимирович, 17 сентября 2018 г. 17:47:20
      В архиве acmp задач на ДП очень много, более сотни. Для многих из них можно найти разборы.
  2  Меньшиков Фёдор Владимирович, 17 сентября 2018 г. 17:44:31
      Номер задачи "Марсианский язык" - 1593. Это стандартная задача на динамическое программирование. Будем отвечать на вопрос задачи (максимальное качество строки) для каждого префикса исходной строки. Переход - перебираем длину последнего слова от L до R, без него получается меньший префикс, для которого ответ уже известен. Добавляем к нему качество последнего слова. Качество последнего слова зависит только от минимальной и максимальной буквы, поэтому можно не получать его заново для каждой длины, а обновлять эту информацию за O(1) при увеличении длины слова на 1. Восстановление ответа тоже стандартное - в момент принятия решения о бОльшей сумме запоминаем, какой длины было последнее слово. Потом идём с конца, каждый раз убирая последнее слово.
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2019, E-mail: admin@acmp.ru