Пожалуйста, подпишитесь на официальный канал Codeforces в Telegram по ссылке https://t.me/codeforces_official. ×

Задача на ДП

Правка ru1, от Karaev_Marik, 2016-02-15 14:52:17

Привет всем! Решаю вот эту вот задачу ссылка Придумал только вот какое решение. Считаем dp[i]-максимальная выручка за за первые i дней. Переход dp[i]=max(0<=j<=i: dp[j]+c[i]*(pref[i]-pref[j])), то есть перебираем когда в последний раз нам выгодно рубить дерево и выбираем оптимальный. Здесь pref[k]-на сколько вырастет бамбук за первые k дней. Но, это О(n^2). Как решить эту задачу за O(n)?

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
ru1 Русский Karaev_Marik 2016-02-15 14:52:17 488 Первая редакция (опубликовано)