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

Автор RestingRajarshi, 5 лет назад, По-английски

I was learning DSU tree (also sometimes known as Reachability Tree) recently (see link below) but the most useful application that I could think was for finding maximum/minimum edge in path from some node A to B. However, this can also be done in O(log N) time using Link Cut Trees.

I was wondering if there was anything that can be done by this DSU-tree/Reachability Tree data structure that can't already be done by LCT.

(I am not that well versed with applications of LCT)

Brief idea about Reachability tree for those too bored to read the editorial linked:

Basically, when we iterate over the edges in a tree in order of weight, we also maintain which edge is connecting which component. So suppose an edge e connects components A and B, we create a new node signifying e and attach to its children A and B. Thus it forms a binary tree, with the leaves as the original nodes, and the n-1 internal edges are basically edges in the normal tree.

(https://discuss.codechef.com/t/tulips-editorial/12281)

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

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

In such problem, you can use euler cycle on tree and sparse table or segment tree to find minimum between l and r.

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

    you mean like the thing suggested in the editorial itself. making a euler tour and converting it into a range query problem?

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

      Yes thing such in editorial. I believe that in each problem that can be solved by LCT, exist easier solution. Such an euler tour in this problem. But if you didn't find any solution without persistant dsu, it is good proposal to think about solution with LCT

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

        I am not looking for problems where both methods can be used, I am looking, rather, for problems which are inherently more suited to reachability trees that to Link-Cut-Trees.

»
5 лет назад, # |
Rev. 4   Проголосовать: нравится +80 Проголосовать: не нравится

Sell me this ds's usefulness scene from arXiv.org-
Cwhtc: Do you guys not wana lose some pain from the ass? I mean like Do you guys not wana lose some f**king pain from the ass?
Lct: I wanna lose some pain. Okay, I can code anything. I can lambda-template myself with great f**king UI.
Cwhtc: There we go... That's the attitude... right there... You can code anything right?
Lct: Damn right
Cwhtc: Okay if you can code anything... anything right?
Lct: Damn right
Cwhtc: Code this muthaf**kin problem... code that
Lct: I can't do that~ I gotta go through the template~ I haven't used no template in last 6 months
Cwhtc: Well looks like Muthaf**kin Purple can't code a muthaf**ukin problem
Lct: You racist muthafuk-
Cwhtc: Rt, show them how it's done
Rt: Yeah I can code this problem
Cwhtc: That's my boy right there... can fu*kin do anything
Rt: You want me to say the words?
Cwhtc: Be gentle with those words
Rt: You wana know what my solution... COMES WITH?
Cwhtc: Ah sh*t it's comin
Rt: Free... Tree-Binarizing... Mutha... Fu**k a a aa aaa aaaaa aaaaaaaa aaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa

  • Contestant Who Hates To Code = Cwhtc
  • Link/cut Tree = Lct
  • Reachability Tree = Rt
    Reference
»
5 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

I think the most useful application of the DSU tree is that you can rearrange reachable nodes under some limits into a subtree or an interval. Then you can maintain the information with some interval data structures. That's what you can't do with LCT.

For example, for the problem IOI2018 werewolf, you can solve it with a dsu tree.

hint

But I don't know how to solve this with LCT or something similar.

Sorry for my poor English.