题意
令 f ( a , S , K ) f(a,S,K) f(a,S,K) 表示数组 b b b 中第 K K K 小的元素,其中 ∀ i ∈ [ 1 , n ] , b i = a i ⊕ S \forall i \in [1,n], b_i=a_i \oplus S ∀i∈[1,n],bi=ai⊕S( ⊕ \oplus ⊕ 为异或操作)。
现在有数组 a a a 和 q q q 次询问,每次询问给出 L , R L,R L,R,求 min S = L R f ( a , S , K ) \min\limits_{S=L}^{R}f(a,S,K) S=LminRf(a,S,K)。
其中, n , q ≤ 1 0 5 , 0 ≤ a i < 2 30 , 0 ≤ L ≤ R < 2 30 n,q\le 10^5,0\le a_i<2^{30},0\le L\le R<2^{30} n,q≤105,0≤ai<230,0≤L≤R<230。
分析
建出 01 t r i e 01trie 01trie 后,对于 t r i e trie trie 树上的每个节点 p p p,可以预处理出对于任意 S ∈ [ 0 , 2 30 ) S\in[0,2^{30}) S∈[0,230), f ( a , S ) f(a,S) f(a,S) 的第 k k