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

Автор vintage_Vlad_Makeev, история, 9 лет назад, По-русски

Добрый день!

Попытался сегодня написать HLD (а точнее эту задачу). Писал полностью как написано на e-maxx, но при этом стабильно получаю WA. Что я делаю не так? Есть предположение, что я неправильно проверяю "тяжесть" ребра, но с округлениями в разные стороны все-равно WA. мой код

Спасибо большое!

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

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

а просто дополнять путь ребром которая ведет к самому максимальному поддереву нельзя?

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

В моей картине мира неверное определение тяжести ребра должно максимум давать TL из-за неидеального разбиения, но никак не WA. Например, я в HLD сначала разбиваю на блоки (один кусок кода), а потом второй кусок кода просто знает, где лежит каждая вершина, то есть даже если у меня "тяжёлое" ребро некорректно опередилилось, то какое-то разбиение в любом случае есть.

Стресс-тест пробовали?

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

    Пробовал и стресс, и хитрые рукописные тесты, но ничего не находится :(

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

      А покажите-ка, пожалуйста, тупое решение, генератор тестов и скрипт для тестирования.

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

        Спасибо большое, только что переписал, строя цепочки в самого тяжёлого сына и зашло.

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

          Так в чём проблема-то была и почему стресс это не ловил?

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

            Судя по всему, проблема в неаккуратной обработке пересечения пути и блока.

            Насколько я понял, стресс не ловил из-за того, что random_shuffle вершин дает примерно одинаковые деревья. Стресс с примеров генерации дерева из testlib довольно быстро поймал.

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

    Вроде если совсем неправильно написать может получиться, что из вершины вниз смотрит 2 тяжелых ребра. В этом случае даже разбиение может построиться не пойми какое.