Блог пользователя Programmer007

Автор Programmer007, 12 лет назад, По-русски

Ребята, объясните пожалуйста, как решать эту задачу: http://acm.timus.ru/problem.aspx?space=1&num=1017&locale=ru

  • Проголосовать: нравится
  • +11
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Представить число в виде суммы слагаемых по возрастанию

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

dp[сколько кубиков использовали,какой длины ставим ступень]. Тогда dp[i,j]=dp[i-j,1]+dp[i-j,2]+...+dp[i-j,j-1].

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

О, три года не мог решить эту задачу, пока внезапно не начал понимать динамику.

dp[all][last] — сколько способов сделать лестницу, если всего использовано all кубиков и в последнем столбце их last штук.

Пробуем в следующий столбец поставить next кубиков (ясно, что должно соблюдаться next > last и all + next <= n).
Тогда dp[all + next][next] += dp[all][last].

Ответ — сумма dp[n][i] по всем i.

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Огромное всем спасибо! я её сдал!

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Комментарий удален администрацией по причине несоблюдения правил сайта.