# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
2 | maomao90 | 163 |
4 | atcoder_official | 161 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | nor | 153 |
9 | Dominater069 | 153 |
Name |
---|
Auto comment: topic has been updated by fsociety00 (previous revision, new revision, compare).
You may try a segment tree on the euler tour.You need to understand the euler tour/rmq algorithm for lca first (it can be found here https://en.wikipedia.org/wiki/Lowest_common_ancestor ).Then,build a segment tree holding the maximum value of
lev[node1]-2*lev[node2]+lev[node3]
where node1 and node3 are at first occurrence,both are white and node2 can be found between them(and is not neccesarily white)-lev[x]
denotes the level of node x.Of course,you need to maintain some helping values (e.g maximum oflev[node1]-2*lev[node2]
) but I find this a good segment tree exercise.Finally, you get O(logn) per update.Can you please Elaborate on how to Maintain the Structure. A submission Code would be Extremely Helpful.
This function 'merges' 2 segment nodes(you now the answers for
[a;b]
inB
,for[b+1;c]
inC
and you get them for[a,c]
inA
.I'm sorry it isn't very explicit, but i'll try to explain which is every part of the structure.The rest of the segment tree and building euler tour is more of a prequisite and I would PM if requested, but I find the most important part here.