Editorial for COI '11 #3 Setnja
Submitting an official solution before solving the problem yourself is a bannable offence.
Each of Mirko's friends is described by numbers . Notice that possible meeting points with a given friend form a square centered at
– more precisely, a square with opposing vertices at
and
.
Now the task has been reduced to finding the shortest possible path that touches all squares in order from first to last.
For each from
to
, we consider all possible shortest paths that visit squares
, in that order. Let
be the set of all endpoints of those paths, i.e. the set of all positions where we could have ended up after visiting the first
friends in an optimal manner. Let
be the length of these shortest paths.
Notice that is precisely the square corresponding to the first friend, since we could have started (and ended) a path with length
by visiting the first friend in any point of that square.
The solution should proceed to find . As we will show, all the sets will be rectangles. Now we have to determine how to find
if we are given
.
Let be the minimum distance (number of steps) from any point of
to the square belonging to the
friend (whom we need to visit next). Notice that
.
If we expand the rectangle by
units in all four directions, we will obtain all points reachable after optimally visiting the first
friends and then moving
steps in any direction. The intersection of the expanded rectangle and the square corresponding to the
friend is therefore the set of points where we can meet friend
after making
steps (from the definition of
, the intersection is guaranteed to be nonempty) – therefore, this intersection is exactly
, furthermore it is a rectangle (as an intersection of a square and a rectangle, both aligned with the same axes).
The final solution is simply the sum of all values obtained while finding
– this is precisely
.
Comments