P3060 [USACO12NOV]平衡树Balanced Trees

    • 6通过
    • 27提交
  • 题目提供者 FarmerJohn2
  • 评测方式 云端评测
  • 标签 字符串 枚举,暴力 USACO 2012 高性能
  • 难度 NOI/NOI+/CTSC
  • 时空限制 1000ms / 128MB

题解

  • 提示:收藏到任务计划后,可在首页查看。
  • 体验新版界面

    最新讨论 显示

    推荐的相关题目 显示

    题目描述

    Fascinated by his experience with balanced parentheses so far, Farmer John is curious if you can help him solve one final problem. As it turns out, FJ's farm is in the shape of a giant tree of N pastures (1 <= N <= 40,000), each of which he has labeled with either ( or ). For example:

    '('--'('--')'--'('--')'

    | |

    ')' ')'--'('--'('

    | |

    ')' '('--')'--')'--')'--'('

    Recall that since his farm is a tree, this means that certain pairs of pastures are connected by corridors so that there is one unique path between any given pair of pastures. FJ believes that some of these paths represent balanced strings of parentheses. In particular, he would like to know, among all such balanced strings represented by paths through the tree, what is the maximum nesting depth one can find. The nesting depth of a balanced string of parentheses is the maximum, over all prefixes of the string, of the excess number of ('s within the prefix. For example, the string ()()() has nesting depth 1, but the string ((()))() has nesting depth 3, as we can see clearly if we count excess ('s for every prefix of the string:

    ((()))()

    12321010

    For the example farm above, the deepest string is ((())) with a depth of 3, and can be obtained by taking the path from A to B below:

    '('--'('--')'--'('--')' 
    |         | 
    ')'       ')'--'('--'(' < A 
    |              | 
    ')'            '('--')'--')'--')'--'(' 
    ^C                            ^B 

    Note that this is different than the longest balanced string; for instance (())(()), starting at A and ending at C, has length 8.

    Your task is to output the nesting depth of the deepest balanced path in the tree.

    给出一棵树,每个结点上有一个括号。问在所有括号平衡的路径中,最大深度为多少。

    输入输出格式

    输入格式:

    * Line 1: A single integer N, the number of nodes in the tree.

    * Lines 2..N: Line i+1: A single integer p_(i+1) (1 <= p_(i+1) <= i), denoting an edge between nodes i+1 and p_{i+1} in the tree.

    * Lines N+1..2N: Line N+i: Either ( or ), the label of node i.

    输出格式:

    * Line 1: A single integer, giving the maximum nesting depth of a balanced path.

    输入输出样例

    输入样例#1: 复制
    15 
    1 
    2 
    1 
    4 
    4 
    6 
    7 
    5 
    9 
    9 
    11 
    12 
    13 
    14 
    ( 
    ) 
    ) 
    ( 
    ) 
    ) 
    ( 
    ) 
    ( 
    ( 
    ( 
    ) 
    ) 
    ) 
    ( 
    
    输出样例#1: 复制
    3 
    

    说明

    This is the example from the problem description, with the following node labels:

    1'('--4'('--6')'--7'('--8')'

    | |

    2')' 5')'--9'('--10'('

    | |

    3')' 11'('--12')'--13')'--14')'--15'('

    提示
    标程仅供做题后或实在无思路时参考。
    请自觉、自律地使用该功能并请对自己的学习负责。
    如果发现恶意抄袭标程,将按照I类违反进行处理。