http://acm.hznu.edu.cn/OJ/problem.php?cid=1263&pid=2
http://acm.hznu.edu.cn/OJ/problem.php?id=2581
题意:区间求and,区间求or,区间求xor,求区间第k小。
题解:
如果只有询问,可以维护一棵可持久化01树,从根到某个节点的路径表示此节点的二进制,每个节点记录此节点的数字的个数。
如果加上xor x操作,那么询问的时候如果x的数字这位为1,则走相反的路。
如果加上and x操作,会使得所有数在x二进制位0的位全部变为0,而加上or x操作,会使得所有x二进制为1的位全部变为1。所以对于每一位,当这样的合并请求发生的时候并且之前没进行过的时候,直接暴力重构数据结构即可,这样总共有log次重构。
总复杂度是(nlog2x+mlogx)。