Блог пользователя valeriy.stromov

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

Интересуют идеи решения задач на ДП с Тимуса: 1495 1658 1776

Заранее спасибо!

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

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

1658 — динамика — d[i][j] — минимальная длина числа с суммой цифр i и суммой квадратов цифр j. Переходы — ставим все возможные новые цифры и обновляем d[i+k][j+k*k].

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

    А что если два разных числа имеют одни и те же сумму цифр, сумму квадратов цифр и длину, а вывести нужно наименьшее из них. С помощью чего это можно решить?

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

      Когда строишь ответ, идешь с конца и перебираешь цифры по возрастанию. Если d[i-k][j-k*k] + 1 == d[i][j], то цифра k подходит

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

    (сумма цифр) <= 10^4, (сумма квадратов цифр) <= 10^4 => (количество состояний) <=10^8. Переход за 10. Сложность получается 10^9. Разве это должно успевать?

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

1776 Пусть dp[k] — математическое ожидание времени, нужное для запуска всех ракет в интервале длинной k. Нас интересует dp[n-2]. Переход на k делаем перебором первой запустившейся ракеты (для каждого i (1<=i<=k) отрезок будет делиться на два отрезка, длины которых (i-1) и (k-i) ).

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

1495: Динамика: состояние — кол-во цифр и остаток от деления на N. Переход: приписываем по одной цифре справо налево. Для каждого состояния храним, достижимо ли оно. Чтобы восстановить ответ, находим наименьшую длину, при которой достижим остаток 0, а дальше на каждом шаге при возможности берем 1, а если не можем, то 2.