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

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

Уже подошел к концу очередной SRM. Хотелось бы услышать решения второй задачи див1, с доказательством верхней границы времени работы.

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

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

За 5ю степень пойдет? Будем оценивать качество каждой фирмы как 2 * число компонент — число вершин — 2. Тогда для каждой фирмы потребуется ее качество портов (или 0, если оно отрицательно). Считаем динамикой, состояние — (корень, номер последнего необработанного ребра), результат — вероятность для каждой пары качеств (при этом первым идет качество той фирмы, которой принадлежит корень). Пересчет за четвертую степень, состояний O(V + E)

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

    Да, красивое решение

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

    Не совсем уверен, но, по-моему, можно сделать за 3ю степень полностью забив на вторую фирму. Состояние (качество фирмы номер 1, какой фирме принадлежит текущая вершина). Все остальное тоже, только пересчитываем за квадрат. Так мы посчитаем матожидание денег, которое заплатит первая фирма. Умножив на два эту величину получим ответ.

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

Есть хоть какие-то идеи, как решать 900? (И почему она 900, а не 1000 тоже).

Была мысль искать отрицательные циклы в каком-то странном графе на ребрах, пока получается. Но это непонятно ни почему работает, ни за сколько работает.

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

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

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

    Сделаем граф двудольным. S — исток, T — сток, v — вершина, v_1 — копия вершины горизонтальная, v_2 — копия вершины вертикальная.

    Будем искать сейчас mincost-maxflow добавим ребра пропускных способностей 2 и стоимости 0 из S->v, v->T. Дальше, добавим два ребра из v -> v_i пропускных способностей 1 и стоимостей 0 и field[i][j] == 'C'. дальше соеденим вертикальные копии с вертикальными и горизонтальные с горизонтальными ребрами стоимости 0 и пропускных способностей 1. дальше пустим поток понятно какой велечины проверим, что он достаточно большой и выведем стоимость. Кажется баги нет семплы оно проходило до глюков с ареной у моего компа.

    Решение прошло в дорешке тупой Форд Беллман с очередью работает максимум 100ms.

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

      А где здесь вообще ребра стоимости >0?

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

        field[i][j] == 'C' оно бывает 1 или 0

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

          А, сорри, не заметил. Да, решение похоже на правду.

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

            Я надеюсь они не заставят дейкстру с потенциалами писать... я хочу что-бы фордбеллман с очередью прошёл, а то тогда это на 900 совсем не катит... он у меня был написан на контесте, но у меня что-то с компом случилось и ареной... и не смог отправить...

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

      Да, решение правильное и ФордБеллман с очередью прошёл... =( Обидно из-за глючности софта не сдать 900 :'(

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