Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое программирование, небольшая ACM задачка 
:(
    Опции темы
n1k0LaY
Дата 18.6.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.6.2008

Репутация: нет
Всего: нет



вообщем простая олимп школьная задачка)) что то не могу реализовать эффективное решение( не проходит по всем тестам)

не буду копи-пастить
Ссылка
http://acm.dvpion.ru/?main=task&id_task=29

Собственно не прошу решить, а обьяснить 

Я понимаю что нужно создать 4 переменных, и считывать в них пошагово, и выбирать либо прыгнуть на 3 либо на 1, но вот что то не проходит, прав ли я?) 
Да и не пойму как сделать эффектиную проверку (на сколько прыгнуть).

PM MAIL ICQ   Вверх
2p0i
Дата 20.6.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 14.9.2007

Репутация: нет
Всего: 1



Храним в каждый момент времени высоты двух последних платформ (y1 и y2) и оптимальное количество энергии, нужное, чтобы до них добраться (x1 и x2). Считываем высоту следующей платформы: y. Тогда оптимальная энергия для новой платформы будет x = min(x2+abs(y-y2), x1+3*abs(y-y1)). Меняем переменные после очередного шага: x1 := x2, x2 := x; y1 := y2; y2 := y.
PM MAIL   Вверх
fukusu
Дата 29.1.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



Цитата(2p0i @ 20.6.2008,  11:29)
Храним в каждый момент времени высоты двух последних платформ (y1 и y2) и оптимальное количество энергии, нужное, чтобы до них добраться (x1 и x2). Считываем высоту следующей платформы: y. Тогда оптимальная энергия для новой платформы будет x = min(x2+abs(y-y2), x1+3*abs(y-y1)). Меняем переменные после очередного шага: x1 := x2, x2 := x; y1 := y2; y2 := y.

А что будешь делать если на вход пойдет:
4
1 5 2 5
по твоей логике сначала будет прыжок с 1 на 2, а потом на 5, что в итоге даст 3+3 ед. потраченной энергии,
хотя оптимальным будет сначала с 1 на 5, а потом через платформу на 5, что в итоге даст 4 ед. затраченной энергии
PM MAIL   Вверх
Akina
Дата 29.1.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 453



Храним в каждый момент времени минимум стоимости прыжка на две последние платформы. Просчитываем стоимость прыжка на следующую с каждой из них, оставляем минимум из двух. Всё собсно.

Скажем применительно к
N
1 5 2 5 ...

Шаг 1
платформа 1, стоимость 0
платформа 2, стоимость 5-1=4

Шаг 2
платформа 3, прыжок с платформы 1, стоимость 0+3*(2-1)=3
платформа 3, прыжок с платформы 2, стоимость 4+(5-2)=7
минимальное 3
оставляем:
платформа 2, стоимость 4
платформа 3, стоимость 3

Шаг 3
платформа 4, прыжок с платформы 2, стоимость 4+3*(5-5)=4
платформа 4, прыжок с платформы 3, стоимость 3+(5-2)=6
минимальное 4
оставляем:
платформа 3, стоимость 3
платформа 4, стоимость 4
...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.1066 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.