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

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

Доброго утра!

Только, что прошел очередной СРМ, а поста до сих пор нету( Вот я и решил что настало мое время написать пост про СРМ. Интересно как решать Hard.

P.S.: Кажется у KADR а 2999 рейтинга facepalm. Удачи в следующем раунде :-)

P.S.2: Систесты оказались мгновенными.

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

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

Спасибо, удача мне теперь не помешает :) А главное, все из-за ресабмита по 250, в которой я завел слишком маленький массив...

Насчет решения 1000. Там можно перебрать одно ребро, которое мы точно удалим. Теперь, у нас есть 2 дерева и нужно из них поудалять куски так, чтобы оставшиеся деревья были изоморфны. Будем делать динамику: f(e1, e2) — максимальный размер изоморфных кусков, при условии что мы только что удалили из первого дерева ребро e1, из второго — e2 и стоим в их концах (ребра ориентированные). Посчитаем в начале нашу динамику для всех пар вершин, смежных с теми, где мы стоим. Теперь нам нужно как-то заматчить между собой эти вершины, максимизировав при этом суммарное количество вершин в дереве, которое получится. Это можно сделать Венгерским алгоритмом или же при помощи MCMF.

Сложность на первый взгляд большая (можно оценить как O(N6)), но наверняка там все делится на N или N2 (я этого не доказывал). Работает 0.323 на макстесте в практис руме.

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

    По 250й я тоже потерял баллы. Я неправильно понял слово within я почему-то подумал, что это ровно, а не меньше или равно)

    А по харду крутое решение.

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

achievement unlocked, можно обратно в желтые.

500 можно решить быстрее, чем за куб?

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

    Не похоже. Тем более ее бы не дали с ограничениями 300. Вообще на US Open этого года в Gold дивизионе задача A была немного похожа на эту (только совсем другая :-)).

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

      Так мало ли, пример — задача F c чемпионата Урала, который сейчас идет.

      Ее тоже обычно дают с ограничениями в пределах 300. Но вот тут взяли, и не дали:)

      Если решение с лучшей асимптотикой слишком сложное для div1 500, то все выглядит вполне логично.

      Я заинтересовался, потому что вспомнил, что где-то уже видел такую или очень похожую задачу с довольно жесткими, как для куба, ограничениями. То ли 1000, то ли 1111 даже.

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

    Вроде бы за квадрат не сложно решается. Пусть f(i, j) — это количество способов расставить волков так, чтобы предпоследний был в позиции i, а последний — в j. Чтобы сделать переход, переберем позицию предыдущего волка k и если она согласуется с нашими отрезками, то прибавим к f(i, j) величину f(k, i). Это пока работает за O(N3). Теперь заметим, что все подходящие нам k идут подряд, начиная с первой ячейки. Значит, мы можем хранить частичные суммы на префиксах для каждого фиксированного параметра j и делать переход за О(1).

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

      У меня примерно то же самое сдано на контесте. Динамика f(pos, one, two) — сколько способов расставить волков до позиции pos, причём дальше до позиции one можно будет поставить не более одного волка, а до позиции two — не более двух волков. Оптимизация состоит в том, что two — это функция исключительно от pos, значения которой получаются по данным отрезкам линейным предподсчётом. Поэтому состояния динамики — на самом деле пары (pos, one), и из каждого два перехода: поставить или не поставить волка на позицию pos. Вот код.

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

      Ну да, все ведь так просто) Спасибо.

      Как по мне, могли бы ее дать в роли 500 и с ограничениями, не допускающими решение за куб. Тем более, что подобного рода задачи у них в роли медиума бывают не так уж и редко.

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

Затупил.