CF1891B.Deja Vu

普及-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given an array aa of length nn, consisting of positive integers, and an array xx of length qq, also consisting of positive integers.

There are qq modification. On the ii-th modification (1≤i≤q1 \leq i \leq q), for each jj (1≤j≤n1 \leq j \leq n), such that aja_j is divisible by 2xi2^{x_i}, you add 2xi−12^{x_i-1} to aja_j. Note that xix_i (1≤xi≤301 \leq x_i \leq 30) is a positive integer not exceeding 30.

After all modification queries, you need to output the final array.

给你一个长度为 nn 的数组 aa,其中元素均为正整数;以及一个长度为 qq 的数组 xx,其中元素也均为正整数。

共进行 qq 次修改操作。在第 ii 次修改(1≤i≤q1 \leq i \leq q)中,对每个满足 aja_j 能被 2xi2^{x_i} 整除的下标 jj(1≤j≤n1 \leq j \leq n),将 2xi−12^{x_i-1} 加到 aja_j 上。注意:xix_i(1≤xi≤301 \leq x_i \leq 30)是不超过 30 的正整数。

完成所有修改操作后,你需要输出最终的数组。

输入格式

The first line contains a single integer tt (1≤t≤1041 \leq t \leq 10^4) — the number of test cases. The description of the test cases follows.

The first line of each test case contains two integers nn and qq (1≤n,q≤1051 \leq n, q \leq 10^5) —the length of the array aa and the number of queries respectively.

The second line of each test case contains nn integers a1,a2,a3,…,ana_1, a_2, a_3, \ldots, a_n — the elements of the array aa (1≤ai≤1091 \leq a_i \leq 10^9).

The third line of each test case contains qq integers x1,x2,x3,…,xqx_1, x_2, x_3, \ldots, x_q — the elements of the array xx (1≤xi≤301 \leq x_i \leq 30), which are the modification queries.

It is guaranteed that the sum of nn and the sum of qq across all test cases does not exceed 2⋅1052 \cdot 10^5.

第一行包含一个整数 tt(1≤t≤1041 \leq t \leq 10^4)——测试用例的数量。随后是各测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 qq(1≤n,q≤1051 \leq n, q \leq 10^5)——数组 aa 的长度和查询次数。

每个测试用例的第二行包含 nn 个整数 a1,a2,a3,…,ana_1, a_2, a_3, \ldots, a_n —— 数组 aa 的元素(1≤ai≤1091 \leq a_i \leq 10^9)。

每个测试用例的第三行包含 qq 个整数 x1,x2,x3,…,xqx_1, x_2, x_3, \ldots, x_q —— 数组 xx 的元素(1≤xi≤301 \leq x_i \leq 30),表示修改操作的参数。

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

输出格式

For each test case, output the array after all of the modification queries.

对于每个测试用例,输出执行完所有修改查询后的数组。

输入输出样例

  • 输入#1

    4
    5 3
    1 2 3 4 4
    2 3 4
    7 3
    7 8 12 36 48 6 3
    10 4 2
    5 4
    2 2 2 2 2
    1 1 1 1
    5 5
    1 2 4 8 16
    5 2 3 4 1

    输出#1

    1 2 3 6 6 
    7 10 14 38 58 6 3 
    3 3 3 3 3 
    1 3 7 11 19

说明/提示

In the first test case, the first query will add 22 to the integers in positions 44 and 55. After this addition, the array would be [1,2,3,6,6][1, 2, 3, 6, 6]. Other operations will not modify the array.

In the second test case, the first modification query does not change the array. The second modification query will add 88 to the integer in position 55, so that the array would look like this: [7,8,12,36,56,6,3][7, 8, 12, 36, 56, 6, 3]. The third modification query will add 22 to the integers in positions 2,32, 3, 44 and 55. The array would then look like this: [7,10,14,38,58,6,3][7, 10, 14, 38, 58, 6, 3].

在第一个测试用例中,第一个查询会将位置 44 和 55 上的整数各加 22。执行该加法操作后,数组变为 [1,2,3,6,6][1, 2, 3, 6, 6]。其余操作不会修改该数组。

在第二个测试用例中,第一个修改查询不会改变数组。第二个修改查询会将位置 55 上的整数加 88,使得数组变为:[7,8,12,36,56,6,3][7, 8, 12, 36, 56, 6, 3]。第三个修改查询会将位置 22、33、44 和 55 上的整数各加 22,此时数组变为:[7,10,14,38,58,6,3][7, 10, 14, 38, 58, 6, 3]。

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

首页