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

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

Всем привет) Сегодня на тренировке решали олимпиаду "2012-2013 ACM-ICPC, NEERC, Центральный четвертьфинал ". У нас не получилось сдать задачи I и J. В принципе не получилось сдать еще больше, но над этими мы бились, пытаясь получить AC. В J у нас было WA56, а в I точно не правильное решение. Поэтому хотелось бы узнать как решать эти задачи и плюс еще и F.

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

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

F — задача имеет неверное жадное решение, которое не вписывается в ограничения для диапазона получаемых результатов (до 10^9), но оно получит AC. Идея — для каждого столбика исходной матрицы посчитаем LCM. Получим последовательность чисел, которую надо сделать возрастающей. Жадно на каждом шаге будем домножать текущее число на разные числа подряд и проверять — выполняется ли при этом все условия на остальные GCD. Если число подошло — переходим к другому числу последовательности.

J — найти сильносвязные компоненты в графе, сжать каждую компоненту в точку и в полученом дереве связать 2 самые удалённые вершины через 2 запуска bfs.

На сайте http://rsatu.ru в разделе ACM выложены тесты (и может что то ещё) к задачам.

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

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

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

    Спасибо! У нас было по F такое же решение, только умножать мы думали не просто на разные числа, а на минимальный возможный простой делитель. Только у нас встал вопрос, может быть такое, что вместо того, чтобы умножить несколько раз на маленькое число, лучше было бы умножить один раз на большое (чтобы, например, избежать превышения 1e9).