CCC '10 S5 - Nutrient Tree

View as PDF

Submit solution

Points: 20 (partial)
Time limit: 1.0s
Memory limit: 256M

Problem type
Canadian Computing Competition: 2010 Stage 1, Senior #5

There is a binary tree with l leaves (1 \le l \le 51) where each leaf k has an amount of nutrients n_k (1 \le n_k \le 10\,000) that it produces.

The branches (which you can think of as edges) of this binary tree limit the maximum amount of nutrients that can flow to the root of the tree. You have X growth agents (1 \le X \le 2500) that can be used to increase the thickness of an edge or increase the nutrient production of a leaf node. Initially, each edge has a weight of 1 and if you give it w growth agents then it can transport (1 + w)^2 nutrients. Increasing the nutrient production of a leaf with initial value n_k by s raises the nutrient production of that leaf to n_k + s.

Notice that when edges meet, the amount of nutrient that flows is the sum of nutrients flowing along the incoming edges.

Find the maximum amount of nutrients you can transport to the root.

Input Specification

The first line of input will be a description of the tree. This description can be defined recursively as either an integer n_k (1 \le n_k \le 10\,000) or as (T_L T_R) where T_L and T_R are descriptions of the left and right subtrees, respectively. The second line of input will be the integer X, the number of growth agents you have. Note: at least 30% of the marks for this question have l \le 5 and X \le 50.

Output Specification

On one line, output the maximum amount of nutrients that can flow into the root of the tree.

Sample Input

(5 ((7 1) (3 4)))

Output for Sample Input


Explanation of Output for Sample Input

The tree description can be illustrated as:

Notice that if we put two growth factors on the left edge of the root, and one growth factor on the right edge of the root. Then, there will be 5 nutrients flowing from the leaf labelled 5 to the root (since the capacity is (1 + 2)^2 = 9 units of nutrients) and 2 nutrients flowing from the right subtree (since the capacity is (1 + 1)^2 = 4, but there are only 2 units of nutrients due to limits of 1 on the edges attached to all other leaves).

Alternatively, notice that increasing the nutrient production of the left leaf of the root to 6, and increasing the capacity of the root to the left leaf by 2 (to give a capacity of (1 + 2)^2 = 9 units) would cause 6 units of nutrients to flow into the root from the left tree, and the right subtree of the root would produce 1 unit of nutrient.

In both cases, the maximum amount of nutrients that can reach the root node is 7.


  • 34
    Evan_Yu123  commented on Nov. 18, 2017, 2:15 a.m.

    the last 3 cases have spaces between the brackets

    • 0
      ChrisLi  commented on Jan. 15, 2020, 4:56 p.m.

      I could have handled the test cases with one line in python, but the brackets from the last 3 test cases are so annoying...