块乐 分析 因为这题查询的是指定区间 \([l, r]\) 的最大异或子段,我们很难不想到使用可持久化 \(\texttt{trie}\) 来搞。 然而,对于每次查询,如果单纯地使用可持久化 \(\texttt{trie}\),那么必须要枚举右端点进行查询,那么每次查询的复杂度是 \(O(n{\rm {log}} V)\)(\(V\) 为值域大小),承
摘要 给定序列, 若干个询问, 给定 \(l,r\), 求 \(a[i]\) \(xor\) \(a[i+1]\) \(xor\) \(···\) \(xor\) \(a[j]\) (\(l<=i<=j<=r\)) 的最小值 解 先假设一个问题: 求 \(a[i]\) \(xor\) \(a[j]\) 的最大值 我们用分块+可持久化 \(trie\) 可以解决: 定义数组 \(f[i][j]\) 表示 \(l
题意 F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser autointLogout 捐赠本站 Problem 2741. -- 【FOTILE模拟赛】L2741: 【FOTILE模拟赛】LTime Limit: 15 Sec Memory Limit: 162 MBSubmit: 4196 Solved: 1177[Submit][Status][D
传送门:bzoj2741 题解 异或和最大秒想线性基,然而发现自己丝薄了( 是连续区间)。 维护前缀异或和sis_isi,转成i,j∈[l−1,r]i,j\in[l-1,r]i,j∈[l−1,r]中si xor sjs_i\ xor \ s_jsi xor sj的最大值。 于是维护可持久化trietrietrie树并分块,设fi,jf_{i,j}fi,j表示
传送门 解题思路 首先求出前缀异或和,那么问题就转化成了区间内选两个数使得其异或和最大。数据范围不是很大考虑分块,设\(f[x][i]\)表示第\(x\)块开头到\(i\)这个位置与\(a[i]\)异或得到的最大的数,而对\(f\)求前缀\(max\)就可以得出每一块的开头到后面任意一点的区间内异或最大