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

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

Добрый день!

Сегодня в 19:30 МСК в Тренировках состоится Новогодний контест. Приглашаю всех поучаствовать.

С наступающим!

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

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

Как решалась В?

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

    Я решал динамикой d[сколько прошли указов][предпоследний взятый указ][последний взятый указ]. Переход за O(1) — берем указ / не берем.

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

      Ой, пропустил в условии строчку про то, что порядок указов должен остаться таким же :(

      Тогда понятно как решать, спасибо.

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

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

        А разве не прокатит отсортировать и пустить ту же динамику?

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

          Теперь же мы можем добавлять точки с двух сторон (и динамика получится четвертой степени). Или я не правильно понял идею?

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

Резонный вопрос: как решать H?

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

    Предположим, что число в инпуте длиной n равно сумме двух зеркальных чисел длиной тоже n. Тогда мы знаем сумму первой и последней цифры ответа — она равна последней цифре числа из инпута (так как мы знаем, что переноса разряда не было). Отнимем эту сумму в двух местах — в начале и в конце, а на место первой и последней цифры в ответе поставим любые две, которые дают такую сумму. По сути, мы перешли к задаче меньшего на 2 размера.

    Аналогично предположим, что число из инпута — сумма чисел длины n-1. Тогда мы знаем сумму первой и последней цифры с учётом, что перенос разряда был. И так далее, и тому подобное.

    Невозможность проверяется, к примеру, выходом суммы на каком-то шаге за границы [0 + 0..9 + 9].

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

Кстати, по поводу задачи D, как доказать, что максимальное количество различных палиндромов в строке длины n равно n? А то я просто посмотрел первые 6 значений и заслал наобум..

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

    При добавлении символа в конец строки, добавляется не более одного нового палиндрома: пусть длина наидлиннейшего палиндрома, который является суффиксом строки S, равна X, тогда все палиндромы-суффиксы меньшей длины уже встречались в строке S без последнего символа в позиции |**S**| — X