Can anyone who solved this problem explain how to solve subtask 2 and full solution please ? https://oj.uz/problem/view/BOI17_catinatree
№ | Пользователь | Рейтинг |
---|---|---|
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 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
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
Название |
---|
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)