上浮记录
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
上浮记录
【题目描述】
小灰灰有一个初始为空的数组,要依次放入 个整数 .数组的位置从 开始编号.
对于位置 ,称位置 为它的父位置;位置 没有父位置.例如,位置 的父位置都是 ,位置 的父位置都是 .
1
/ \
2 3
/ \ / \
4 5 6 7
上图中的数字表示位置编号,不是数组中存放的数.
第 次操作,先把 放到数组末尾,即位置 ,再选择以下一种模式.本次刚放入的数在交换后仍会继续移动:
- 小值模式:若当前位置有父位置,且当前数严格小于父位置的数,就交换这两个数,再从父位置继续;否则停止.
- 大值模式:若当前位置有父位置,且当前数严格大于父位置的数,就交换这两个数,再从父位置继续;否则停止.
两个数相等时不交换.每次操作可以独立选择模式,不要求整个数组始终满足某一种大小顺序.
现在给出放入的数字 ,以及希望得到的最终数组 .请计算有多少种模式选择序列能够得到这个最终数组,答案对 取模.
只要某一次操作选择的模式不同,就视为不同序列,即使那一次没有发生交换.第一次操作也要选择模式.若无法得到给定的最终数组,答案为 .
【输入描述】
第一行输入一个整数 .
第二行输入 个整数 ,表示依次放入的数字.
第三行输入 个整数 ,表示最终数组.
保证两个数组中,每个整数出现的次数相同.不保证一定存在符合要求的模式选择序列.
【输出描述】
输出一个整数,表示模式选择序列的数量对 取模后的结果.
【样例 1】
【样例 1 输入】
3
2 2 3
3 2 2
【样例 1 输出】
4
【样例 1 解释】
第一次放入 ,两种模式都不会交换.第二次放入 ,它和父位置的数相等,两种模式仍都不会交换.
第三次放入 ,必须选择大值模式,使它与位置 的 交换,得到数组 .前两次分别有两种选择,因此共有 种序列.
【样例 2】
【样例 2 输入】
3
1 2 3
2 3 1
【样例 2 输出】
0
【样例 2 解释】
前两次操作后,数组只能是 或 .第三次放入的 只可能停在位置 ,或与位置 的数交换,不能到达位置 .
【数据规模与约定】
对于所有数据,,.
本题采用捆绑测试.只有通过一个子任务的全部测试点,才能获得该子任务的分数.
| 子任务编号 | 分数 | 附加限制 |
|---|---|---|
| 1 | 20 | |
| 2 | 10 | |
| 3 | ||
| 4 | 25 | 两两不同 |
| 5 | 35 | 无 |
【下发样例】
Data/sample1.in与Data/sample1.ans:样例 1.Data/sample2.in与Data/sample2.ans:样例 2.Data/sample3.in与Data/sample3.ans:满足子任务 1 的限制.Data/sample4.in与Data/sample4.ans:满足子任务 2 的限制.Data/sample5.in与Data/sample5.ans:满足子任务 3 的限制.Data/sample6.in与Data/sample6.ans:满足子任务 4 的限制.Data/sample7.in与Data/sample7.ans:该样例无特殊限制.Data/sample8.in与Data/sample8.ans:该样例无特殊限制.Data/sample9.in与Data/sample9.ans:该样例无特殊限制.Data/sample10.in与Data/sample10.ans:该样例无特殊限制.