#P6562. [SBCOI2020] 归家之路
[SBCOI2020] 归家之路
Description
天空中一共有 颗星,依次编号为 。每颗星都有一个亮度值。初始时第 颗星的亮度值为 。
对于两个正整数 我们定义一种布尔类型运算 。如果在 的二进制表示中,满足每一个 是 的位, 的对应位也是 ,那么 为 True , 否则 为 False。
若两数在二进制表示下的位数不同,则将两数 右对齐 后在左侧补0。例如两个数是 和 (二进制), 会变成 。
对于这些星的亮度值有两种操作:
第一种: 。对于所有的满足 值为 True 以及 值为 True 的 ,将第 颗星的亮度值加上 。
第二种: 。若第 颗星的编号 满足 值为 True 以及 值为 True。求出所有第 颗星的亮度总和,答案对 取模。
Input Format
第一行两个整数 。
第二行 个整数,用空格隔开,表示 。
接下来 行,每行代表一个操作,格式见【题目描述】。
Output Format
对于每一个 操作,输出一行表示答案。
3 3
1 2 3 4 5 6 7 8
2 0 7
1 1 5 1
2 1 7
36
22
Hint
【样例解释】
第一次是询问, 的二进制表示为 , 的二进制表示为 。此时,所有数都满足,即求的是所有数之和,为 。
第二次是修改, 的二进制表示为 , 的二进制表示为 ,发现 满足,二进制表示分别为 ,所以 的值从 变为 。
第三次是询问, 的二进制表示为 , 的二进制表示为 ,发现 满足,二进制表示分别为 ,,,。求的是 的和 。
【数据范围】
本题捆绑测试,共有 个子任务。
:答案为样例。
:。
:所有 操作都在 操作之后。
:没有任何额外限制。
对于 的数据,$1 \le n \le 16,1 \le m \le 2\times 10^5, 0 \le a,b \le 2^n-1,0 \le a_i,k \le 2^{32}-1$。
【温馨提示】
对 取模,可以直接用无符号 32 位整形的数据类型进行运算。在 c++ 中就是 unsigned int。
也就是【直接自然溢出啥事没有】。
京公网安备 11011102002149号