CF1704G.Mio and Lucky Array
NOI/NOI+/CTSC
通过率:0%
时间限制:5.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Mio has an array a consisting of n integers, and an array b consisting of m integers.
Mio can do the following operation to a:
- Choose an integer i (1≤i≤n) that has not been chosen before, then add 1 to ai, subtract 2 from ai+1, add 3 to ai+2 an so on. Formally, the operation is to add $(-1)^{j-i} \cdot (j-i+1) $ to aj for i≤j≤n.
Mio wants to transform a so that it will contain b as a subarray. Could you answer her question, and provide a sequence of operations to do so, if it is possible?
An array b is a subarray of an array a if b can be obtained from a by deletion of several (possibly, zero or all) elements from the beginning and several (possibly, zero or all) elements from the end.
米奥有一个由 n 个整数组成的数组 a,以及一个由 m 个整数组成的数组 b。
米奥可以对 a 执行如下操作:
- 选择一个之前未被选过的整数 i(满足 1≤i≤n),然后将 ai 加 1,将 ai+1 减 2,将 ai+2 加 3,依此类推。形式化地,该操作是对每个满足 i≤j≤n 的下标 j,将 aj 增加 (−1)j−i⋅(j−i+1)。
米奥希望将 a 变换为一个包含 b 作为子数组的数组。你能回答她的问题吗?如果可行,请给出一组合法的操作序列。
若数组 b 可通过从数组 a 的开头删除若干(可能为零或全部)元素、并从结尾删除若干(可能为零或全部)元素而得到,则称 b 是 a 的一个子数组。
输入格式
The input consists of multiple test cases. The first line contains a single integer t (1≤t≤104) — the number of test cases. The description of test cases follows.
The first line of each test case contains one integer n (2≤n≤2⋅105) — the number of elements in a.
The second line of the test case contains n integers a1,a2,⋯,an (−105≤ai≤105), where ai is the i-th element of a.
The third line of the test case contains one integer m (2≤m≤n) — the number of elements in b.
The fourth line of the test case contains m integers b1,b2,⋯,bm (−1012≤bi≤1012), where bi is the i-th element of b.
It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.
输入包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含一个整数 n(2≤n≤2⋅105),表示数组 a 的元素个数。
每个测试用例的第二行包含 n 个整数 a1,a2,⋯,an(−105≤ai≤105),其中 ai 是数组 a 的第 i 个元素。
每个测试用例的第三行包含一个整数 m(2≤m≤n),表示数组 b 的元素个数。
每个测试用例的第四行包含 m 个整数 b1,b2,⋯,bm(−1012≤bi≤1012),其中 bi 是数组 b 的第 i 个元素。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
If it is impossible to transform a so that it contains b as a subarray, output −1.
Otherwise, the first line of output should contain an integer k (0≤k≤n), the number of operations to be done.
The second line should contain k distinct integers, representing the operations done in order.
If there are multiple solutions, you can output any.
Notice that you do not need to minimize the number of operations.
如果无法通过变换使 a 包含 b 作为其子数组,则输出 −1。
否则,输出的第一行应包含一个整数 k(0≤k≤n),表示所需执行的操作次数。
第二行应包含 k 个互不相同的整数,表示按顺序执行的操作。
若存在多种解法,输出任意一种即可。
注意:你无需最小化操作次数。
输入输出样例
输入#1
5 5 1 2 3 4 5 5 2 0 6 0 10 5 1 2 3 4 5 3 3 5 3 8 -3 2 -3 -4 4 0 1 -2 4 10 -6 7 -7 5 1 2 3 4 5 4 1 10 1 1 5 0 0 0 0 0 2 10 12
输出#1
1 1 1 4 5 1 3 4 6 8 -1 -1
说明/提示
In the first test case, the sequence a = [1,2,3,4,5]. One of the possible solutions is doing one operation at i=1 (add 1 to a1, subtract 2 from a2, add 3 to a3, subtract 4 from a4, add 5 to a5). Then array a is transformed to a = [2,0,6,0,10], which contains b = [2,0,6,0,10] as a subarray.
In the second test case, the sequence a = [1,2,3,4,5]. One of the possible solutions is doing one operation at i=4 (add 1 to a4, subtract 2 from a5). Then array a is transformed to a = [1,2,3,5,3], which contains b = [3,5,3] as a subarray.
In the third test case, the sequence a = [−3,2,−3,−4,4,0,1,−2]. One of the possible solutions is the following.
- Choose an integer i=8 to do the operation. Then array a is transformed to a = [−3,2,−3,−4,4,0,1,−1].
- Choose an integer i=6 to do the operation. Then array a is transformed to a = [−3,2,−3,−4,4,1,−1,2].
- Choose an integer i=4 to do the operation. Then array a is transformed to a = [−3,2,−3,−3,2,4,−5,7].
- Choose an integer i=3 to do the operation. Then array a is transformed to a = [−3,2,−2,−5,5,0,0,1].
- Choose an integer i=1 to do the operation. Then array a is transformed to a = [−2,0,1,−9,10,−6,7,−7].
The resulting a is [−2,0,1,−9,10,−6,7,−7], which contains b = [10,−6,7,−7] as a subarray.
In the fourth test case, it is impossible to transform a so that it contains b as a subarray.
In the fifth test case, it is impossible to transform a so that it contains b as a subarray.
在第一个测试用例中,序列 a = [1,2,3,4,5]。一种可能的解法是在 i=1 处执行一次操作(对 a1 加 1,对 a2 减 2,对 a3 加 3,对 a4 减 4,对 a5 加 5)。此时数组 a 变为 a = [2,0,6,0,10],其中包含子数组 b = [2,0,6,0,10]。
在第二个测试用例中,序列 a = [1,2,3,4,5]。一种可能的解法是在 i=4 处执行一次操作(对 a4 加 1,对 a5 减 2)。此时数组 a 变为 a = [1,2,3,5,3],其中包含子数组 b = [3,5,3]。
在第三个测试用例中,序列 a = [−3,2,−3,−4,4,0,1,−2]。一种可能的解法如下:
- 选择整数 i=8 执行操作,则数组 a 变为 a = [−3,2,−3,−4,4,0,1,−1]。
- 选择整数 i=6 执行操作,则数组 a 变为 a = [−3,2,−3,−4,4,1,−1,2]。
- 选择整数 i=4 执行操作,则数组 a 变为 a = [−3,2,−3,−3,2,4,−5,7]。
- 选择整数 i=3 执行操作,则数组 a 变为 a = [−3,2,−2,−5,5,0,0,1]。
- 选择整数 i=1 执行操作,则数组 a 变为 a = [−2,0,1,−9,10,−6,7,−7]。
最终得到的 a 为 [−2,0,1,−9,10,−6,7,−7],其中包含子数组 b = [10,−6,7,−7]。
在第四个测试用例中,无法将 a 变换为包含 b 作为子数组的数组。
在第五个测试用例中,无法将 a 变换为包含 b 作为子数组的数组。
输入解题思路,AI测评打分。不知道怎么写?