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