题目描述
题解
涉及到前序遍历,中序遍历方面一定可以得到一个特性,即:一棵子树一定是一个连续的区间。
这里的限制只是为了保证转移的合法性,我们设 f [ i ] [ j ] f[i][j] f[i][j]表示前序遍历中对区间[i,j]作为一棵树的方案数。
我们如何判断转移的合法性呢?
- 如果不存在 i i i连向 [ j + 1 , r ] [j+1,r] [j+1,r]的边,说明不存在右子树,可以累加答案。
- 反之如果不存在 [ j + 1 , r ] [j+1,r] [j+1,r]连向 i i i的边,说明不存在左子树,同样可以累加答案。
- 我们根据前序遍历的特性,两个子树一定是两个区间,我们在枚举中间的断点 k k k满足i没有向 [ i + 1 , k ] [i+1,k] [i+1,