#P15677. [ICPC 2024 Jakarta R] Xorderable Array

[ICPC 2024 Jakarta R] Xorderable Array

题目描述

给定一个包含 NN 个整数的数组 AA:[A1,A2,…,AN][A_1, A_2, \dots, A_N]。

如果可以通过重排 AA,使得对于所有满足 1≤i<j≤N1 \leq i < j \leq N 的 (i,j)(i, j) 对,在重排后都满足以下两个条件:Ai⊕p≤Aj⊕qA_i \oplus p \leq A_j \oplus q 且 Ai⊕q≤Aj⊕pA_i \oplus q \leq A_j \oplus p,则称数组 AA 是 (p,q)(p, q)-xorderable 的。其中运算符 ⊕\oplus 表示按位异或。

给定另一个长度为 MM 的数组 XX:[X1,X2,…,XM][X_1, X_2, \dots, X_M]。请计算满足 1≤u<v≤M1 \leq u < v \leq M 且数组 AA 是 (Xu,Xv)(X_u, X_v)-xorderable 的 (u,v)(u, v) 对的数量。

输入格式

第一行包含两个整数 NN MM(2≤N,M≤200 0002 \leq N, M \leq 200\,000)。

第二行包含 NN 个整数 AiA_i(0≤Ai<2300 \leq A_i < 2^{30})。

第三行包含 MM 个整数 XuX_u(0≤Xu<2300 \leq X_u < 2^{30})。

输出格式

输出一个整数,表示满足 1≤u<v≤M1 \leq u < v \leq M 且数组 AA 是 (Xu,Xv)(X_u, X_v)-xorderable 的 (u,v)(u, v) 对的数量。

3 4
0 3 0
1 2 1 1
3
5 2
0 7 13 22 24
12 10
1
3 3
0 0 0
1 2 3
0

提示

样例输入/输出 #1 的解释

数组 AA 是 (1,1)(1, 1)-xorderable 的,可以通过将数组 AA 重排为 [0,0,3][0, 0, 3] 来实现。

样例输入/输出 #2 的解释

数组 AA 是 (12,10)(12, 10)-xorderable 的,可以通过将数组 AA 重排为 [13,0,7,24,22][13, 0, 7, 24, 22] 来实现。

翻译由 DeepSeek V3.2 完成