Блог пользователя amazing-hash

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

Подскажите идею, как реализовать функцию прибавления на интервале в "Дереве отрезков", без рекурсивной реализации? Например для суммы. То есть после модификации отвечать на сумму на интервале.

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

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

Извиняюсь, но зачем? Я всё время пишу групповую модификацию DFS-ом.

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

    Да я и не спорю, что многие так делают. Все таки есть классический учебник e-maxx!

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

      Причина не только в е-максе. Лично я никогда не пользовался нерекурсивным деревом отрезков исключительно потому, что мне как-то не нравится для каждой задачи с запросами на отрезках придумывать специфичный только для нее алгоритм.

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

Ну как сказать)) захотелось и не смог! Хочу узнать теперь а как все-таки ! Да и пишу я его всегда не рекурсивно.

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

Здесь приведена хорошая нерекурсивная реализация ДО с модификацией на отрезке. Спасибо indy256! Ещё на этом сайте можно найти другие реализации ДО и вообще много всего интересного.

Здесь и здесь можно прочитать про нерекурсивную реализацию ДО, а также про то, как делать отложенные операции. В целом, на этом сайте тоже много разных вкусняшек! И здесь уже спасибо, наверное, andrewzta :)

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

Я ведь не могу прибавить на интервале и потом ответить с учетом этих действий на запрос суммы на интервале? Мне ведь все равно придется для этого пересчитывать все вершины дерева на этом интервале. И если все таки это можно то как? Как я понял я могу ответить на запрос о значение конкретного элемента быстро после модификации на интервале (точнее это я могу).