CF2077F.AND x OR

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

假设你有两个长度均为 kk 的数组 cc 和 dd。当且仅当 cc 可以通过以下操作任意次变换为 dd 时,称这对数组 (c,d)(c, d) 是好的:

  • 选择两个不同的下标 ii 和 jj(1≤i,j≤k1 \leq i, j \leq k,i≠ji \neq j)以及一个非负整数 xx(0≤x<2300 \leq x < 2^{30})。然后执行以下变换:
    • ci:=ci&xc_i := c_i \mathbin{\&} x(其中 &\& 表示按位与运算)
    • cj:=cj∣xc_j := c_j \mathbin{|} x(其中 ∣| 表示按位或运算)

给定两个长度为 nn 的数组 aa 和 bb,其中元素均为不超过 mm 的非负整数。你可以对这两个数组进行任意次以下两种操作:

  1. 选择一个下标 ii(1≤i≤n1 \leq i \leq n),令 ai:=ai+1a_i := a_i + 1
  2. 选择一个下标 ii(1≤i≤n1 \leq i \leq n),令 bi:=bi+1b_i := b_i + 1

注意在执行操作过程中,aa 和 bb 的元素可能会超过 mm。

求使得数组对 (a,b)(a, b) 成为好的数组对所需的最小操作次数。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。接下来描述每个测试用例。

每个测试用例的第一行输入两个整数 nn 和 mm(1≤n,m≤2×1061 \leq n, m \leq 2 \times 10^6)——分别表示数组 aa 和 bb 的长度,以及数组中元素的最大初始值。

第二行输入 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤m0 \leq a_i \leq m)——表示数组 aa。

第三行输入 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(0≤bi≤m0 \leq b_i \leq m)——表示数组 bb。

保证所有测试用例的 nn 总和与 mm 总和均不超过 2×1062 \times 10^6。

输出格式

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

输入输出样例

  • 输入#1

    5
    4 3
    0 1 2 3
    0 1 2 3
    3 32
    8 9 32
    8 6 32
    5 64
    5 7 16 32 64
    4 8 16 32 64
    4 11
    9 1 4 3
    8 11 6 2
    5 10
    7 9 5 4 2
    3 10 6 5 9

    输出#1

    0
    2
    2
    0
    1

说明/提示

第一个测试用例中,已有 a=ba = b。

第二个测试用例中,可以对下标 i=2i=2 执行两次操作 2。数组 bb 将变为 [8,8,32][8, 8, 32],此时 (a,b)(a, b) 成为好的数组对。

第三个测试用例中,可以对下标 i=1i=1 执行一次操作 2,再对下标 i=2i=2 执行一次操作 1。可以证明无法用少于 2 次操作使 (a,b)(a, b) 成为好的数组对。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页