3734: 异或(第六轮04)
题目描述
异或是数学运算的一种。在计算机科学中, 如同其他位运算一样,异或运算的定 义为:对于任意两个整数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行,每行四个整数l,r,p, 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位无符号整数范围内。
请选手注意由于输入输出带来的时间开销对题目时间限制的影响。