CF1893B.Neutral Tonality
普及+/提高
通过率:0%
时间限制:3.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array a consisting of n integers, as well as an array b consisting of m integers.
Let LIS(c) denote the length of the longest increasing subsequence of array c. For example, LIS([2,1,1,3]) = 2, LIS([1,7,9]) = 3, LIS([3,1,2,4]) = 3.
You need to insert the numbers b1,b2,…,bm into the array a, at any positions, in any order. Let the resulting array be c1,c2,…,cn+m. You need to choose the positions for insertion in order to minimize LIS(c).
Formally, you need to find an array c1,c2,…,cn+m that simultaneously satisfies the following conditions:
- The array a1,a2,…,an is a subsequence of the array c1,c2,…,cn+m.
- The array c1,c2,…,cn+m consists of the numbers a1,a2,…,an,b1,b2,…,bm, possibly rearranged.
- The value of LIS(c) is the minimum possible among all suitable arrays c.
给你一个由 n 个整数组成的数组 a,以及一个由 m 个整数组成的数组 b。
记 LIS(c) 为数组 c 的最长递增子序列 的长度。例如,LIS([2,1,1,3])=2,LIS([1,7,9])=3,LIS([3,1,2,4])=3。
你需要将数字 b1,b2,…,bm 插入到数组 a 中(可插在任意位置,顺序可任意)。设得到的数组为 c1,c2,…,cn+m。你需要选择插入位置,使得 LIS(c) 尽可能小。
形式化地说,你需要找到一个数组 c1,c2,…,cn+m,使其同时满足以下条件:
- 数组 a1,a2,…,an 是数组 c1,c2,…,cn+m 的一个子序列;
- 数组 c1,c2,…,cn+m 由数字 a1,a2,…,an,b1,b2,…,bm 组成(顺序可重排);
- 在所有满足上述条件的数组 c 中,LIS(c) 的值最小。
输入格式
Each test contains multiple test cases. The first line contains a single integer t (1≤t≤104) — the number of test cases. The description of the test cases follows.
The first line of each test case contains two integers n,m (1≤n≤2⋅105,1≤m≤2⋅105) — the length of array a and the length of array b.
The second line of each test case contains n integers a1,a2,…,an (1≤ai≤109) — the elements of the array a.
The third line of each test case contains m integers b1,b2,…,bm (1≤bi≤109) — the elements of the array b.
It is guaranteed that the sum of n over all test cases does not exceed 2⋅105, and the sum of m over all test cases does not exceed 2⋅105.
每个测试包含多个测试用例。第一行包含一个整数 t (1≤t≤104) —— 测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含两个整数 n,m (1≤n≤2⋅105,1≤m≤2⋅105) —— 数组 a 的长度和数组 b 的长度。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an (1≤ai≤109) —— 数组 a 的元素。
每个测试用例的第三行包含 m 个整数 b1,b2,…,bm (1≤bi≤109) —— 数组 b 的元素。
保证所有测试用例中 n 的总和不超过 2⋅105,且所有测试用例中 m 的总和不超过 2⋅105。
输出格式
For each test case, output n+m numbers — the elements of the final array c1,c2,…,cn+m, obtained after the insertion, such that the value of LIS(c) is minimized. If there are several answers, you can output any of them.
对于每个测试用例,输出 n+m 个数——即插入操作后得到的最终数组 c1,c2,…,cn+m 的元素,使得 LIS(c) 的值最小。如果存在多个满足条件的答案,输出任意一个即可。
输入输出样例
输入#1
7 2 1 6 4 5 5 5 1 7 2 4 5 5 4 1 2 7 1 9 7 1 2 3 4 5 6 7 8 9 3 2 1 3 5 2 4 10 5 1 9 2 3 8 1 4 7 2 9 7 8 5 4 6 2 1 2 2 1 6 1 1 1 1 1 1 1 777
输出#1
6 5 4 1 1 7 7 2 2 4 4 5 5 9 8 7 7 6 5 4 3 2 1 1 3 5 2 4 1 9 2 3 8 8 1 4 4 7 7 2 9 6 5 2 2 1 777 1 1 1 1 1 1
说明/提示
In the first test case, LIS(a)=LIS([6,4])=1. We can insert the number 5 between 6 and 4, then LIS(c)=LIS([6,5,4])=1.
In the second test case, LIS([1,7,2,4,5]) = 4. After the insertion, c=[1,1,7,7,2,2,4,4,5,5]. It is easy to see that LIS(c)=4. It can be shown that it is impossible to achieve LIS(c) less than 4.
在第一个测试用例中,LIS(a)=LIS([6,4])=1。我们可以在 6 和 4 之间插入数字 5,此时 LIS(c)=LIS([6,5,4])=1。
在第二个测试用例中,LIS([1,7,2,4,5])=4。插入后,c=[1,1,7,7,2,2,4,4,5,5]。显然有 LIS(c)=4。可以证明,不可能使 LIS(c) 小于 4。
输入解题思路,AI测评打分。不知道怎么写?