CF2084F.Skyscape

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

给定一个长度为 nn 的排列 aa ∗^{\text{∗}}。

我们称一个长度为 nn 的排列 bb 是好的,如果在最多进行 nn 次(可以是零次)以下操作后,排列 aa 和 bb 可以变得相同:

  • 选择两个整数 l,rl, r,满足 1≤l<r≤n1 \le l < r \le n 且 ar=min⁡(al,al+1,…,ar)a_r = \min(a_l, a_{l + 1}, \ldots, a_r)。
  • 将子段 [al,al+1,…,ar][a_l, a_{l + 1}, \ldots, a_r] 循环右移一位。换句话说,将 aa 替换为:

    [a1,…,al−1,  ar,al,al+1,…,ar−1,  ar+1,…,an][a_1, \ldots, a_{l - 1}, \; a_r, a_l, a_{l + 1}, \ldots, a_{r - 1}, \; a_{r + 1}, \ldots, a_n]

同时给定一个长度为 nn 的排列 cc,其中部分元素缺失(用 00 表示)。

你需要找到一个好的排列 b1,b2,…,bnb_1, b_2, \ldots, b_n,使得 bb 可以通过填充 cc 中缺失的元素得到(即对于所有 1≤i≤n1 \le i \le n,如果 ci≠0c_i \ne 0,则 bi=cib_i = c_i)。如果不存在这样的排列,输出 −1-1。

∗^{\text{∗}} 长度为 nn 的排列是指由 11 到 nn 的 nn 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(因为 22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(因为 n=3n=3 但数组中包含 44)。

输入格式

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

每个测试用例的第一行包含一个整数 nn(2≤n≤5⋅1052 \le n \le 5 \cdot 10^5)。
第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤n1 \le a_i \le n)。保证 aa 是一个长度为 nn 的排列。
第三行包含 nn 个整数 c1,c2,…,cnc_1, c_2, \ldots, c_n(0≤ci≤n0 \le c_i \le n)。保证 cc 中非 00 的元素互不相同。

保证所有测试用例的 nn 之和不超过 5⋅1055 \cdot 10^5。

输出格式

对于每个测试用例:

  • 如果无法找到满足条件的好排列 bb,输出一个整数 −1-1。
  • 否则,输出 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n——你找到的好排列 bb。需要确保对于所有 1≤i≤n1 \le i \le n,如果 ci≠0c_i \ne 0,则 bi=cib_i = c_i。如果有多个解,输出任意一个即可。

输入输出样例

  • 输入#1

    9
    2
    2 1
    1 2
    4
    3 2 4 1
    2 0 0 1
    5
    3 2 1 5 4
    1 3 0 0 0
    5
    3 2 1 5 4
    3 2 1 5 4
    5
    3 2 1 5 4
    3 2 5 1 4
    6
    3 5 6 2 1 4
    0 2 0 5 0 0
    6
    3 5 6 2 1 4
    0 2 0 6 4 0
    9
    6 9 2 4 1 7 8 3 5
    0 2 5 9 0 0 0 8 0
    9
    8 5 3 9 1 7 4 6 2
    0 0 8 0 7 0 4 0 2

    输出#1

    1 2
    2 3 4 1
    1 3 2 4 5
    3 2 1 5 4
    -1
    3 2 1 5 4 6
    -1
    -1
    1 3 8 5 7 9 4 6 2

说明/提示

  • 在第一个测试用例中,b=[1,2]b = [1, 2] 是一个有效解,因为进行以下操作后 aa 和 bb 会变得相同:

    • 选择 l=1,r=2l = 1, r = 2 并循环右移子段 [a1,a2][a_1, a_2]。此时 aa 变为 [1,2][1, 2]。
  • 在第二个测试用例中,b=[2,3,4,1]b = [2, 3, 4, 1] 是一个有效解,因为进行以下操作后 aa 和 bb 会变得相同:

    • 选择 l=1,r=2l = 1, r = 2 并循环右移子段 [a1,a2][a_1, a_2]。此时 aa 变为 [2,3,4,1][2, 3, 4, 1]。
  • 在第三个测试用例中,b=[1,3,2,4,5]b = [1, 3, 2, 4, 5] 是一个有效解,因为进行以下操作后 aa 和 bb 会变得相同:

    • 选择 l=1,r=3l = 1, r = 3 并循环右移子段 [a1,a2,a3][a_1, a_2, a_3]。此时 aa 变为 [1,3,2,5,4][1, 3, 2, 5, 4]。
    • 选择 l=4,r=5l = 4, r = 5 并循环右移子段 [a4,a5][a_4, a_5]。此时 aa 变为 [1,3,2,4,5][1, 3, 2, 4, 5]。
  • 在第四个测试用例中,b=[3,2,1,5,4]b = [3, 2, 1, 5, 4] 是一个有效解,因为 aa 和 bb 已经相同。

  • 在第五个测试用例中,不存在满足条件的好排列 bb,因此输出 −1-1。

  • 在第六个测试用例中,b=[3,2,1,5,4,6]b = [3, 2, 1, 5, 4, 6] 是一个有效解,因为进行以下操作后 aa 和 bb 会变得相同:

    • 选择 l=2,r=4l = 2, r = 4 并循环右移子段 [a2,a3,a4][a_2, a_3, a_4]。此时 aa 变为 [3,2,5,6,1,4][3, 2, 5, 6, 1, 4]。
    • 选择 l=3,r=5l = 3, r = 5 并循环右移子段 [a3,a4,a5][a_3, a_4, a_5]。此时 aa 变为 [3,2,1,5,6,4][3, 2, 1, 5, 6, 4]。
    • 选择 l=5,r=6l = 5, r = 6 并循环右移子段 [a5,a6][a_5, a_6]。此时 aa 变为 [3,2,1,5,4,6][3, 2, 1, 5, 4, 6]。

翻译由 DeepSeek V3 完成

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

首页