Editorial for COCI '15 Contest 1 #6 Uzastopni
Submitting an official solution before solving the problem yourself is a bannable offence.
Let denote the set of all the possible joke intervals that can be found at the party if we observe person and all their direct or indirect subordinates (the subtree of person ).
Let us assume that for a person we have calculated the values of sets for each direct subordinate node to that person. Then we can calculate using dynamic programming.
Let denote the set of all right sides of the interval of jokes that can be heard in the subtree of person and whose left side of the interval is equal to . We iterate in the descending order over all the possible left sides and for each we iterate over all the possible right sides so that there is a child of node that has the interval in its set and we calculate the following relation:
A special case when , then simply means:
The time complexity of this algorithm is where is the number of different jokes, and is the number of nodes. A bitset data structure can be used in order to accelerate calculating the union operation by times.
Comments