luckyi's blog

By luckyi, 13 years ago, In Russian

прошу помощи по задаче:

http://informatics.mccme.ru/moodle/mod/statements/view3.php?id=1974&chapterid=2789#1


не могу придумать как проталкивать информацию о необходимости обменов на отрезке. точнее придумал как это сделать за O(h):

пусть есть дерево curr_tree - нужный нам отрезок. корень нужно непосредственно обменять с его парой(это будет либо левый, либо правый потомок). Т.е. разделяем curr_tree на left, right, M1, M2 (где M1, M2 деревья, состоящие из 1 вершины - те, которые мы хотим поменять местами). У left и right изменяем информацию о перевороте. Потом склеиваем как left + M2 + M1 + right. но такая реализация TLится.

может можно проталкивать за O(1)?
  • Vote: I like it
  • 0
  • Vote: I do not like it