3734: 异或(第六轮04)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:2 解决:1

题目描述

异或是数学运算的一种。在计算机科学中, 如同其他位运算一样,异或运算的定 义为:对于任意两个整数a和b的每一位,当且仅当a和b在这一位上的值不同,运 算结果在这一位为1,否则为0。

例如,3异或5的结果为6。根据上述运算法则, 3的四位二进制表示为0011,5的 四位二进制表示为0101。对于最高位和最低位, 3和5在每一位上的值相同,所以 结果为0;对于其余两位,3和5在每一位的值不同,所以结果为1。因此, 0011异 或0101的结果为0110,也即十进制下的6。

阅读了上面介绍,相信聪明的你一定学会了异或运算的法则,能够灵活运用这一 运算了。那么,这里有一道关于异或运算的问题,赶快来试试看吧!

现有一个长度为n 的数组(下标为0到n − 1),其初始值均为0。

你需要对其进行m次操作,每次操作需要以从l到r的每个数字异或p作为操作下 标(若操作下标超过数组容量大小,则对这一下标的操作可以跳过),对数组这 些下标的元素异或q 。

最后,你需要依次输出这个数组每个元素的值(保证数组的每个元素在这m次操 作过程中均在32位无符号整数范围内)。

输入

第一行包含两个整数n和m。

接下来有m行,每行四个整数lrp q,含义见题目描述。

输出

只有一行,包含 n 个非负整数,即在 m 次操作后数组每个元素的值。

样例输入 复制

4 2
0 2 0 3
1 3 0 5

样例输出 复制

3 6 6 5

提示

【样例 1 输入】

4 2

0 2 0 3

1 3 0 5

【样例 1 输出】

3 6 6 5

【样例 1 说明】

第一次操作,操作下标为0, 1, 2,数组变为: 3, 3, 3, 0

第二次操作,操作下标为1, 2, 3,数组变为: 3, 6, 6, 5

【样例 2 输入】

4 2

0 2 0 3

1 3 1 5

【样例 2 输出】

6 3 6 5

【样例 2 说明】

第一次操作,操作下标为0, 1, 2,数组变为: 3, 3, 3, 0

第二次操作,操作下标为0, 3, 2,数组变为: 6, 3, 6, 5

【样例 3 输入】

4 2

0 2 1 3

1 3 1 5

【样例 3 输出】

6 3 5 6

【样例 3 说明】

第一次操作,操作下标为1, 0, 3,数组变为: 3, 3, 0, 3

第二次操作,操作下标为0, 3, 2,数组变为: 6, 3, 5, 6

【数据范围】

对于所有的测试点,满足1 ≤ n, m ≤ 2^18, 0 ≤ l ≤ r < n,保证数组的每个元素在 这m次操作过程中均在32位无符号整数范围内。

请选手注意由于输入输出带来的时间开销对题目时间限制的影响。


来源/分类