单种位运算
交换律:a@b=b@a
结合律:a@(b@c)=(a@b)@c
按位与/或
下文按位与/或统称#
单位元为11..11(2)/0
不存在逆运算
幂等律
a#a=a
单调性
a&b≤min(a,b)
a∣b≥max(a,b)
操作数无关性
存在一个最大集合A,a,b∈A,a#b=k
按位异或
单位元为0
自反
其逆运算即为自身
b⊕b=0
复合位运算
分配律
a&(b∣c)=(a&b)∣(a&c)
a^(b∣c)=(a^b)∣(a^c)
应用
关于并运算的后缀最大值
定义下标从0开始,长度为n的数组a前缀最大值b为
bj=max({ai∣0≤i<j})
对下标并运算的前缀最大值
bj=max({ai∣i&j=j})
由单调性可知i≥j
不妨假设我们已知j>k的所有bj,目的是求bk
我们知道前缀和符合交换律和结合律
那么定义集合D={1,102,102,1002,...10(2)⌈log(n)⌉}
这样转移即可bk=max(ak,{bu∣u=k或运算d,d∈D})
例题
2021“MINIEYE杯”中国大学生算法设计超级联赛(2)—I love max and multiply
https://acm.hdu.edu.cn/showproblem.php?pid=6971