CF1976E.Splittable Permutations
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
最初,我们有一个长度为 n 的数组,这个数组是一个排列(即长度为 n 的数组,包含 1 到 n 的每个整数且各出现一次)。
我们进行了 q 次操作。在第 i 次操作中,我们进行了如下步骤:
- 选择当前拥有的任意一个至少包含 2 个元素的数组;
- 将其拆分为两个非空数组(前缀和后缀);
- 记录两个整数 li 和 ri,其中 li 是拆分后左部分的最大值,ri 是右部分的最大值;
- 将被选择的数组从可用数组池中移除,并将拆分得到的两个部分加入数组池。
例如,假设初始数组为 [6,3,4,1,2,5],我们进行了如下操作:
- 选择数组 [6,3,4,1,2,5],将其拆分为 [6,3] 和 [4,1,2,5]。此时记录 l1=6,r1=5,当前拥有的数组为 [6,3] 和 [4,1,2,5];
- 选择数组 [4,1,2,5],将其拆分为 [4,1,2] 和 [5]。此时记录 l2=4,r2=5,当前拥有的数组为 [6,3]、[4,1,2] 和 [5];
- 选择数组 [4,1,2],将其拆分为 [4] 和 [1,2]。此时记录 l3=4,r3=2,当前拥有的数组为 [6,3]、[4]、[1,2] 和 [5]。
给定两个整数 n 和 q,以及两个序列 [l1,l2,…,lq] 和 [r1,r2,…,rq]。如果存在一种长度为 n 的排列,能够通过 q 次操作得到给定的 [l1,l2,…,lq] 和 [r1,r2,…,rq],则称该排列是“合法”的。
请计算合法排列的数量。
输入格式
第一行包含两个整数 n 和 q(1≤q<n≤3⋅105)。
第二行包含 q 个整数 l1,l2,…,lq(1≤li≤n)。
第三行包含 q 个整数 r1,r2,…,rq(1≤ri≤n)。
输入保证:至少存在一个排列可以得到给定的 [l1,l2,…,lq] 和 [r1,r2,…,rq]。
输出格式
输出一个整数,表示合法排列的数量,对 998244353 取模。
输入输出样例
输入#1
6 3 6 4 4 5 5 2
输出#1
30
输入#2
10 1 10 9
输出#2
1814400
输入#3
4 1 2 4
输出#3
8
说明/提示
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?