Can anyone who solved this problem explain how to solve subtask 2 and full solution please ? https://oj.uz/problem/view/BOI17_catinatree
# | 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 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Can anyone who solved this problem explain how to solve subtask 2 and full solution please ? https://oj.uz/problem/view/BOI17_catinatree
Name |
---|
Auto comment: topic has been updated by youssefbou62 (previous revision, new revision, compare).
Same problem with weights on nodes : Link
Here's the O(n) solution described as well as the subtasks : Link
keep taking the deepest node.Invalidate all nodes with with distance <=d from that node.
centroid decomposition
for each node in the centroid tree keep all the nodes in its subtree in sorted order by distance from it in ascending order
when invalidating a node check check it and all of its parents in the centroid tree and start invalidating from the first node not already invalidated if the distance<=d.keep increasing the counter
https://oj.uz/submission/244589 O(n*logn*logn)