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

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

Пусть есть корневое дерево. Насколько оптимально быстро можно делать присвоение/добавление только лишь предкам/потомкам какой-то(произвольной) вершины?

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

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

За логарифм. Аналогично множественной модификации дерева отрезков. Тут http://e-maxx.ru/algo/segment_tree ближе к концу заголовок "Прибавление на отрезке".

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

    а как мне занумеровать в таком случае вершины дерева?

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

    Скорее за высоту дерева.

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

      да, за высоту я умею

      UPD: предкам(за высоту), а потомкам, наверное я могу быстрее(в оффлайне).

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

        Ну можно выписать вершины в порядке прямого обхода (pre-order) и за логарифм прибавлять к потомкам.
        А вот с предками могу подсказать только Heavy-light decomposition.

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

          Да, с потомками я тоже самое хотел. А вот с предками проблема, согласен. Спасибо! Буду думать в том направлении.