CFCF2147E.Maximum OR Popcount

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

给定一个长度为 nn 的非负整数数组。

你需要回答 qq 个相互独立的场景。在第 ii 个场景中,你最多可以进行 bib_i 次如下操作:

  • 选择数组中的一个元素并将其加 11

你的目标是最大化数组所有元素按位或的结果中 11 的位数。对于每个场景,求出能够达到的最多 11 的位数。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt1t1031 \le t \le 10^3),代表测试用例的组数。每组测试用例的描述如下。

每组测试用例的第一行包含两个整数 nnqq1n,q1051 \leq n, q \leq 10^{5}),分别表示数组的长度和场景数量。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ai1090 \leq a_i \leq 10^{9}),表示数组元素。

接下来的 qq 行,每行一个整数 bib_i0bi1090 \leq b_i \leq 10^{9}),表示第 ii 个场景最多可以操作的次数。

保证所有测试用例中 nn 的总和不超过 10510^5qq 的总和不超过 10510^5

输出格式

对于每组测试,用 qq 行输出结果,第 ii 行输出第 ii 个场景下,所有元素按位或后 11 的位数可以达到的最大值。

输入输出样例

  • 输入#1

    3
    1 3
    0
    0
    2
    4
    2 2
    1 3
    0
    3
    2 1
    1000000000 1000000000
    1000000000

    输出#1

    0
    1
    2
    2
    3
    31

说明/提示

可视化链接

在第一个测试用例中:

  • 场景一中没有操作,因此答案等于初始数组按位或后的 11 的个数,即 00,它的二进制表示中有 0011
  • 场景二中,例如对 a1a_111 两次,得到了按位或为 2=(10)22 = (10)_2。可以证明这是最多能达到的 11 位数。
  • 场景三中,通过对 a1a_111 三次,可以得到按位或为 3=(11)23=(11)_2,可以证明这是最优的结果。不需要进行 44 次操作。

在第二个测试用例中:

  • 场景一没有任何操作,因此答案就是原始数组按位或后 11 的个数,即 22
  • 场景二中,例如对 a2a_211 三次,可以得到按位或为 3311。这可以证明是最优结果。
首页