B. 环形传送带的校验值 (conveyorchecksum)

    Type: Default 1000ms 256MiB

环形传送带的校验值 (conveyorchecksum)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

实验室里有一条首尾相接的传送带,上面依次放着 nn 个数据盒。工程师把当前从左到右看到的序列记为 a1,a2,,ana_1,a_2,\ldots,a_n,并定义它的校验值为相邻两个数据盒编号异或后的总和:

$$(a_1 \mathbin{\mathrm{xor}} a_2)+(a_2 \mathbin{\mathrm{xor}} a_3)+\cdots+(a_{n-1} \mathbin{\mathrm{xor}} a_n)$$

传送带每向右转动一次,最右端的数据盒会移动到最左端。例如 [4, 5, 1, 2] 右转一次后变为 [2, 4, 5, 1]

现在会依次进行 mm 轮操作。第 ii 轮会让传送带连续右转 bib_i 次,且每一轮都建立在上一轮结束后的状态上。请输出初始状态以及每轮结束后的校验值。

输入格式

在文件 conveyorchecksum.in 中读入。

第一行输入两个正整数 n,mn,m,表示序列长度和操作轮数。

第二行输入 nn 个正整数 a1,a2,,ana_1,a_2,\ldots,a_n

接下来输入 mm 个正整数 b1,b2,,bmb_1,b_2,\ldots,b_m。这些数可以分布在一行或多行中。

输出格式

在文件 conveyorchecksum.out 中输出。

输出 m+1m+1 个整数,用空格隔开。

第一个整数表示初始序列的校验值,之后第 ii 个整数表示第 ii 轮操作结束后的校验值。

样例

样例输入 #1

5 3
1 2 3 4 5
1 1 2

样例输出 #1

12 15 9 13

样例输入 #2

5 5
10 13 2 5 6
4
1
5
1
2

样例输出 #2

32 37 32 32 41 29

数据范围

  • 对于 20%20\% 的数据,满足 n105,m=0n \le 10^5,m=0
  • 对于另外 40%40\% 的数据,满足 bin103,m5b_i \le n \le 10^3,m \le 5
  • 对于 100%100\% 的数据,满足 2n1052 \le n \le 10^50m,ai,bi1050 \le m,a_i,b_i \le 10^5

J组模拟赛3

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2026-7-22 8:15
End at
2026-7-22 11:45
Duration
3.5 hour(s)
Host
Partic.
15