CF2084F.Skyscape
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的排列 a ∗。
我们称一个长度为 n 的排列 b 是好的,如果在最多进行 n 次(可以是零次)以下操作后,排列 a 和 b 可以变得相同:
- 选择两个整数 l,r,满足 1≤l<r≤n 且 ar=min(al,al+1,…,ar)。
- 将子段 [al,al+1,…,ar] 循环右移一位。换句话说,将 a 替换为:
[a1,…,al−1,ar,al,al+1,…,ar−1,ar+1,…,an]
同时给定一个长度为 n 的排列 c,其中部分元素缺失(用 0 表示)。
你需要找到一个好的排列 b1,b2,…,bn,使得 b 可以通过填充 c 中缺失的元素得到(即对于所有 1≤i≤n,如果 ci=0,则 bi=ci)。如果不存在这样的排列,输出 −1。
∗ 长度为 n 的排列是指由 1 到 n 的 n 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(因为 2 在数组中出现了两次),[1,3,4] 也不是排列(因为 n=3 但数组中包含 4)。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤104)。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(2≤n≤5⋅105)。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n)。保证 a 是一个长度为 n 的排列。
第三行包含 n 个整数 c1,c2,…,cn(0≤ci≤n)。保证 c 中非 0 的元素互不相同。
保证所有测试用例的 n 之和不超过 5⋅105。
输出格式
对于每个测试用例:
- 如果无法找到满足条件的好排列 b,输出一个整数 −1。
- 否则,输出 n 个整数 b1,b2,…,bn——你找到的好排列 b。需要确保对于所有 1≤i≤n,如果 ci=0,则 bi=ci。如果有多个解,输出任意一个即可。
输入输出样例
输入#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] 是一个有效解,因为进行以下操作后 a 和 b 会变得相同:
- 选择 l=1,r=2 并循环右移子段 [a1,a2]。此时 a 变为 [1,2]。
-
在第二个测试用例中,b=[2,3,4,1] 是一个有效解,因为进行以下操作后 a 和 b 会变得相同:
- 选择 l=1,r=2 并循环右移子段 [a1,a2]。此时 a 变为 [2,3,4,1]。
-
在第三个测试用例中,b=[1,3,2,4,5] 是一个有效解,因为进行以下操作后 a 和 b 会变得相同:
- 选择 l=1,r=3 并循环右移子段 [a1,a2,a3]。此时 a 变为 [1,3,2,5,4]。
- 选择 l=4,r=5 并循环右移子段 [a4,a5]。此时 a 变为 [1,3,2,4,5]。
-
在第四个测试用例中,b=[3,2,1,5,4] 是一个有效解,因为 a 和 b 已经相同。
-
在第五个测试用例中,不存在满足条件的好排列 b,因此输出 −1。
-
在第六个测试用例中,b=[3,2,1,5,4,6] 是一个有效解,因为进行以下操作后 a 和 b 会变得相同:
- 选择 l=2,r=4 并循环右移子段 [a2,a3,a4]。此时 a 变为 [3,2,5,6,1,4]。
- 选择 l=3,r=5 并循环右移子段 [a3,a4,a5]。此时 a 变为 [3,2,1,5,6,4]。
- 选择 l=5,r=6 并循环右移子段 [a5,a6]。此时 a 变为 [3,2,1,5,4,6]。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?