CFCF2165C.Binary Wine
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定 n 个整数 a1,a2,…,an,其中 ai 的范围为 [0,230)。
你可以花费 1 个金币将任意 ai 增加 1。你可以进行任意次数的该操作。
现在有 q 个独立的询问,每个询问给出一个整数 c,同样满足 c 的范围为 [0,230)。你希望存在一个长度为 n 的序列 b,满足以下条件:
- 对于每个 1≤i≤n,0≤bi≤ai。
- b1⊕b2⊕…⊕bn=c,其中 ⊕ 表示按位异或运算。
请你计算,为了让存在这样的 b,你最少需要花费多少金币(即对 a 进行若干次 +1 操作后有解)。
各个询问相互独立,某一次对 a 所做的操作不会影响其他询问。
输入格式
第一行输入测试组数 t(1≤t≤104)。接下来是 t 组测试数据。
每组测试数据的第一行包含两个整数 n,q(1≤n≤5⋅105,1≤q≤5⋅104),表示序列长度和询问个数。
第二行包含 n 个整数 a1,a2,…,an(0≤ai<230),表示初始序列 a。
接下来的 q 行,每行一个整数 c(0≤c<230),表示目标异或结果。
保证所有测试数据中 ∑n≤5⋅105,∑q≤5⋅104。
输出格式
对于每个询问,输出一个整数,表示为使存在合适的 b,你最少需要花费的金币数。
输入输出样例
输入#1
4 2 1 5 7 9 3 1 9 9 8 24 6 4 1 1 4 5 1 4 10 20 30 40 1 1 0 0
输出#1
1 7 3 11 16 31 0
说明/提示
在第一个测试样例中,我们花费 1 个金币让 a2 增加 1,变成 [5,8]。一种合适的 b 是 [1,8]。可以证明,最少也需要花费 1 个金币。
在第二个测试样例中,我们可以花费 7 个金币让 a1 增加 7,变成 [16,9,8]。一种合适的 b 是 [16,9,1]。