CF2077F AND x OR

题目描述

假设你有两个长度均为 $k$ 的数组 $c$ 和 $d$。当且仅当 $c$ 可以通过以下操作任意次变换为 $d$ 时,称这对数组 $(c, d)$ 是好的: - 选择两个不同的下标 $i$ 和 $j$($1 \leq i, j \leq k$,$i \neq j$)以及一个非负整数 $x$($0 \leq x < 2^{30}$)。然后执行以下变换: - $c_i := c_i \mathbin{\&} x$(其中 $\&$ 表示[按位与运算](https://en.wikipedia.org/wiki/Bitwise_operation#AND)) - $c_j := c_j \mathbin{|} x$(其中 $|$ 表示[按位或运算](https://en.wikipedia.org/wiki/Bitwise_operation#OR)) 给定两个长度为 $n$ 的数组 $a$ 和 $b$,其中元素均为不超过 $m$ 的非负整数。你可以对这两个数组进行任意次以下两种操作: 1. 选择一个下标 $i$($1 \leq i \leq n$),令 $a_i := a_i + 1$ 2. 选择一个下标 $i$($1 \leq i \leq n$),令 $b_i := b_i + 1$ 注意在执行操作过程中,$a$ 和 $b$ 的元素可能会超过 $m$。 求使得数组对 $(a, b)$ 成为好的数组对所需的最小操作次数。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 $t$($1 \le t \le 10^4$)。接下来描述每个测试用例。 每个测试用例的第一行输入两个整数 $n$ 和 $m$($1 \leq n, m \leq 2 \times 10^6$)——分别表示数组 $a$ 和 $b$ 的长度,以及数组中元素的最大初始值。 第二行输入 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq m$)——表示数组 $a$。 第三行输入 $n$ 个整数 $b_1, b_2, \ldots, b_n$($0 \leq b_i \leq m$)——表示数组 $b$。 保证所有测试用例的 $n$ 总和与 $m$ 总和均不超过 $2 \times 10^6$。

输出格式

对于每个测试用例,输出一个整数——使得数组对 $(a, b)$ 成为好的数组对所需的最小操作次数。

说明/提示

第一个测试用例中,已有 $a = b$。 第二个测试用例中,可以对下标 $i=2$ 执行两次操作 2。数组 $b$ 将变为 $[8, 8, 32]$,此时 $(a, b)$ 成为好的数组对。 第三个测试用例中,可以对下标 $i=1$ 执行一次操作 2,再对下标 $i=2$ 执行一次操作 1。可以证明无法用少于 2 次操作使 $(a, b)$ 成为好的数组对。 翻译由 DeepSeek R1 完成