CF1946E.Girl Permutation

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

猜测了一个长度为 nn 的排列。

你得到了它的前缀最大值和后缀最大值的下标。

回忆一下,长度为 kk 的排列是一个大小为 kk 的数组,其中每个整数 11 到 kk 恰好出现一次。

前缀最大值是指在以该元素结尾的前缀中最大的元素。更正式地说,若 ai>aja_i > a_j 对于所有 j<ij < i,则元素 aia_i 是前缀最大值。

同理,后缀最大值的定义是:若 ai>aja_i > a_j 对于所有 j>ij > i,则元素 aia_i 是后缀最大值。

你需要输出可能被猜测的不同排列的数量。

由于答案可能非常大,请输出答案对 109+710^9 + 7 取模后的结果。

输入格式

每组测试数据包含若干组测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——测试用例的数量。接下来是每组测试用例的描述。

每组测试用例的第一行包含三个整数 n,m1,m2n, m_1, m_2(1≤m1,m2≤n≤2⋅1051 \le m_1, m_2 \le n \le 2 \cdot 10^5)——排列的长度、前缀最大值的数量和后缀最大值的数量。

每组测试用例的第二行包含 m1m_1 个递增的整数 p1<p2<…<pm1p_1 < p_2 < \ldots < p_{m_1}(1≤pi≤n1 \le p_i \le n)——前缀最大值的下标。

每组测试用例的第三行包含 m2m_2 个递增的整数 s1<s2<…<sm2s_1 < s_2 < \ldots < s_{m_2}(1≤si≤n1 \le s_i \le n)——后缀最大值的下标。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每组测试用例,输出一个整数,表示满足条件的排列数量,对 109+710^9 + 7 取模。每个答案占一行。

输入输出样例

  • 输入#1

    6
    1 1 1
    1
    1
    4 2 3
    1 2
    2 3 4
    3 3 1
    1 2 3
    3
    5 3 4
    1 2 3
    2 3 4 5
    20 5 4
    1 2 3 4 12
    12 13 18 20
    6 2 3
    1 3
    3 4 6

    输出#1

    1
    3
    1
    0
    317580808
    10

说明/提示

对于第二组输入数据,满足条件的排列有:

  • [1,4,3,2][1, 4, 3, 2]
  • [2,4,3,1][2, 4, 3, 1]
  • [3,4,2,1][3, 4, 2, 1]

对于第六组输入数据,满足条件的排列有:

  • [2,1,6,5,3,4][2, 1, 6, 5, 3, 4]
  • [3,1,6,5,2,4][3, 1, 6, 5, 2, 4]
  • [3,2,6,5,1,4][3, 2, 6, 5, 1, 4]
  • [4,1,6,5,2,3][4, 1, 6, 5, 2, 3]
  • [4,2,6,5,1,3][4, 2, 6, 5, 1, 3]
  • [4,3,6,5,1,2][4, 3, 6, 5, 1, 2]
  • [5,1,6,4,2,3][5, 1, 6, 4, 2, 3]
  • [5,2,6,4,1,3][5, 2, 6, 4, 1, 3]
  • [5,3,6,4,1,2][5, 3, 6, 4, 1, 2]
  • [5,4,6,3,1,2][5, 4, 6, 3, 1, 2]

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页