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

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

У нас есть сеть. С истоком и стоком. Пропускные способности каждого ребра нам даны. На каждом ходу мы можем выбрать простой путь и пропустить по нему поток. После этого пропускная способность каждого ребра, входящего в данный путь, уменьшается в k раз. Требуется узнать, сколько максимум мы можем протолкнуть потока за m ходов. Если эта задача жутко простая, то хотелось бы еще спросить про такую же задачу, но только, где у каждого ребра разное k. Хотелось бы узнать как можно больше различных решений этих задач.

P.S : Извините за бред, просто в голову пришла данная задача. Извините, если баян или еще что-нибудь. Пожелания по условию приветствуются.

UPD1: Потоком считать вес минимального ребра на этом пути.

UPD2: Требуется максимизировать сумму этих m потоков, что мы пропустили.

UPD3: Учитывая то, что после контеста обычно много народа на кфе, то я апну тему...Да-да, знаю, что нехорошо делаю, но обещаю, что больше так делать не буду ;)..Если хорошего решения у этой задачи не существует, то хотя бы напишите, что это так.

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

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

Оно там делится с остатком или как?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

Вот интересно стало, в чем смысл этого поста?
Я понимаю так: пришла в голову идея задачи, придумал решение, оформил, и вот новая, возможно оригинальная, задача для будущих контестов.
А здесь, попытка придумать совместыми усилиями задачу, которая будет засвечена ещё до появления на свет? Или вот именно эта проблема почему-то спать не даёт?

  • »
    »
    14 лет назад, скрыть # ^ |
    ← Rev. 2  
    Проголосовать: нравится +3 Проголосовать: не нравится

    Именно эта задача не дает спать.

    UPD : неужели у Вас никогда не было, что Вас настолько заинтересовал бы какой-нибудь вопрос, что Вы спрашиваете, почему я выложил эту задачу?

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

      Конечно, это совершенно естественно задать здесь вопрос.
      Просто заголовок у Вас: "(задача собственного сочинения)".
      Если это задача, то вопрос странный. Если же просто попытка совместно продвинуть теорию алгоритмов, то это можно только приветствовать.

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

        Ну, вроде бы, это задача)

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

          Ну, тогда по неписанным правилам CF, надо привести источник, и заголовок должен быть "Help me, please" =)
          А то мало ли кому по ночам что в голову придет.

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

            Можно было бы тогда залить эту задачу на мозырскую тестирующую систему :)

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

              Не хочу попусту цепляться.
              Просто, по-моему, задача — это идея+авторское решение+перекрестное решение+тесты+легенда.
              Заливайте.

              • »
                »
                »
                »
                »
                »
                »
                »
                14 лет назад, скрыть # ^ |
                ← Rev. 2  
                Проголосовать: нравится +5 Проголосовать: не нравится

                Действительно, хватит цепляться к ерунде. Надеюсь, этот комментарий станет последним в этой ветке. Видимо я неправильно выразился, назвав это задачей. Вы не первый человек, который придирается к этому.

»
14 лет назад, скрыть # |
← Rev. 6  
Проголосовать: нравится +3 Проголосовать: не нравится

сделаем из графа мультиграф, вместо оригинального ребра (a, b, W) (W-пропускная способность) у нас появляется C рёбер (a, b, W) (a, b, W/K), (a, b, W/(K^2)) ... (a, b, W/(K^(C-1))) найдём поток в полученном графе. ответ будет отличаться от реального приближенно на 1/K^C. Вроде-бы дальше этот поток будет улучшаться схожим образом, и при желании предел к которому эта байда сходится можно найти аналитически посчитав какие-то параметры проталкивания, и посчитав сумму геометрической прогрессии.

  • »
    »
    14 лет назад, скрыть # ^ |
    ← Rev. 3  
    Проголосовать: нравится +3 Проголосовать: не нравится

    Вот на таком тесте вроде бы не работает.

    Ребра(первое и второе число описывают вершины, связанные ребром, последнее число — пропускную способность) :

    S 1 100

    S 2 100

    2 3 100

    1 3 100

    3 T 1000

    k = 100

    S — это исток

    T — это сток

    Ваш алгоритм найдет ответ 202(при C=2), а правильный ответ 110. Поправьте меня, если я ошибся где-то.

    • »
      »
      »
      14 лет назад, скрыть # ^ |
      ← Rev. 3  
      Проголосовать: нравится +3 Проголосовать: не нравится

      Не разбирал пример, но ты ошибся. Пусть мы протолкнули поток m раз, при этому у нас получилось m путей исток-сток. каждое ребро заюзалось сколько-то раз. В первый раз его пропускная способность была W, второй раз W/k и т.д. в вершину старт входит какое-то кол-во вещества, и из конечной столько же выходит. в каких рёбрах поток какого пути проходит значения не имеет. В этом основная идея.
      UPD: Нет вру, был не прав.