Блог пользователя abd.yerzhan

Автор abd.yerzhan, 13 лет назад, По-русски

Здравствуйте codeforces-чане ) Нуждаюсь в помощи решением одной задачи . Ссылка вот

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

»
13 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

It is guaranteed that the number of ways will be less than 2,000,000,000 (and thus will fit into a 32-bit integer).

Можно обычную динамику за O(6 * n). Если n был бы хотя бы 10^5 то количество превысит 2*10^9.

  • »
    »
    13 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Можно подробней)

  • »
    »
    13 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    А можно узнать про вашу обычную динамику ? Как оно делается ?

    • »
      »
      »
      13 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +3 Проголосовать: не нравится

      d[x][k] — сколькими способами можно представить x, используя монеты типа не более k. Переход — либо увеличиваем количество типов, либо берём монетку самого большого типа, который можем.

      Почему так — попробуем написать перебор и прикрутить к нему запоминание (получим динамику). Пусть как-то набрали. Для определённости (порядок монет неважен) отсортируем их по возрастанию номинала. Заметим, что на очередном шаге перебора нам важно знать лишь остаток суммы и монеты какого минимального номинала мы можем брать.