#P1027. 失序(disorder)
失序(disorder)
Statement
小 L 的生日快到了,作为好朋友,小 Q 打算送出一件名叫 Clever Branch 的礼物。
Clever Branch 是一棵有 个节点的有根二叉树(根不一定为 ),节点的两个儿子是有顺序的,且可以为空。
然而就在生日的前一天,mazihang2022 闯入了小 Q 家把他打晕后偷走了 Clever Branch。等小 Q 醒来,已经是 23:59:58 了。作为 OIer,小 Q 想起似乎只要得到二叉树的两种序就能还原出这棵树,于是他花了 的时间回忆起了 Clever Branch 的前序遍历和后序遍历。这时学艺不精的小 Q 才发现他还需要中序遍历。于是他又花了 时间回忆起了 Clever Branch 的中序遍历。然而,连续的高强度计算使小 Q 内存爆炸,因此中序遍历的一些位置丢失了。距离小 L 生日还剩 ,他已经没有任何的精力计算了,于是请求你求出有多少种不同的二叉树可以是 Clever Branch。由于如果数量太多就没有意义了,你只需要得到这个数量模 后的结果。
Input
第一行输入一个正整数 表示 Clever Branch 的大小。
第二行输入 个正整数 表示 Clever Branch 的前序遍历。
第三行输入 个正整数 表示 Clever Branch 的后序遍历。
第四行输入 个非负整数 表示 Clever Branch 的中序遍历,其中 表示第 个位置的值丢失了。
Output
输出一行一个整数表示可能成为 Clever Branch 的二叉树数量模 的值。
Sample Input 1
2
1 2
2 1
0 0
Sample Output 1
2
Sample Explanation 1
可以是 的左儿子或右儿子。
Sample Input 2
5
5 4 1 2 3
1 2 4 3 5
1 0 0 0 0
Sample Output 2
1
Sample Explanation 2
只有以下一种可能的结果:
5
/ \
4 3
/ \
1 2
Sample Input 3
8
3 5 1 8 7 6 4 2
6 7 2 4 8 1 5 3
0 0 6 7 0 2 0 0
Sample Output
3
Sample Input 4
见 disorder_sample4.in 和 disorder_sample4.out。
满足测试点 的数据范围。
Sample Input 5
见 disorder_sample5.in 和 disorder_sample5.out。
满足测试点 的数据范围。
Constraints
对于 的数据,满足 ,保证至少存在一棵可能的 Clever Branch。
测试点 :。
测试点 :。
测试点 :。
测试点 :。
测试点 :。
测试点 :无特殊限制。
相关
在下列比赛中: