注意这是个合法括号序列,所以我们可以看成是两颗有根树,且孩子是有先后关系的。删去一个 () 形状就等价于删去树的一个叶节点。另一个角度就是我们能否将 T2 “嵌入”到树 T1 中去。我们注意到这是一个子序列问题,所以对于 T2 的每个子树,肯定是在 T1 的子树中越靠前放进去越好。因此我们可以简单地写出一个 check 函数: bool check(int u1, int u2) { int j = 0; for (int v : T2[u2]) { while (j < T1[u1].size() && !check(T1[u1][j], v)) ++j...