做题记录 26.2.1
QOJ #7765. Xor Master
令 \(F\) 表示 \(S_0\) 的线性基,令 \(F_{\min}(x)\) 和 \(F_{\max}(x)\) 分别表示 \(x\) 异或 \(F\) 的一个子集所能得到的最小值和最大值
令 \(s\) 为 \(a\) 的前缀异或和,则一次查询要求 \(\sum_{i=l}^r F_{\max}(s_i\oplus s_{l-1})\)
由于 \(F_{\max}(x\oplus y)=F_{\max}(x)\oplus F_{\min}(y)\),转化为查询 \(\sum_{i=l}^r F_{\max}(s_i)\oplus F_{\min}(s_{l-i})\)
令 \(t_i=F_{\max}(s_i)\)
操作 \(1\) 令 \(s_x\gets s_x\oplus v\),等价于 \(\forall i\ge x,\;t_i\gets F_{\max}(s_i\oplus v)=F_{\max}(s_i)\oplus F_{\min}(v)=t_i\oplus F_{\min}(v)\),即对 \(t\) 的后缀异或上一个数
对于操作 \(2\),若插入 \(x\) 后 \(F\) 不变必然对 \(t\) 无影响,否则假定用高斯消元法插入,实际插入的数值为 \(x'\),则对 \(t\) 的影响为 \(t_i\gets \max(t_i,t_i\oplus x')\),显然这一情况只会出现 \(O(\log V)\) 次
转化为维护一个序列,支持区间异或和查询区间和,使用类似 UOJ #671. 【UNR #5】诡异操作 的方法,精细实现可以做到 \(O(n\log V+q\log n\log V)\)

浙公网安备 33010602011771号