Editorial for DMPG '19 G5 - Hunting the White Whale
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
This problem was greatly inspired by IOI '11 B - Race. Also, Re:Zero season 2 hype!!!
For the first subtask, the tree forms a chain. Thus for each , we can find the number of indices such that the sum of all edges between nodes to equals , and add to the nodes .
Time Complexity:
For the second subtask, we can root the tree at for , and then perform a DFS from the root to every other node. If the path from node to node has sum , then we can add to node .
The update can be achieved by adding to node , and then propagating this change upwards to the root in a single DFS performed at the end.
Time Complexity:
There is no intended solution for subtask 3.
For the final subtask, we can perform centroid decomposition. Consider the tree with centroid . We want to update all paths with LCA . We reroot the tree such that is the root. For every node in the subtree, let denote the sum of the values from to .
Counting the number of paths of length that pass through node is a classical problem. For every other node in 's subtree, we can count the number of nodes that come before in the Euler tour of the tree such that , and . Let this number be . Then we have to add to the path from to . This can be done in constant time.
We then repeat this process, but with a slight modification. For every other node in 's subtree, we can count the number of nodes that come after in the Euler tour of the tree such that , and . Let this number be . Then we have to add to the path from to . This can be done in constant time.
Time Complexity:
Comments