选择数组元素的总和大于数字K

时间:2019-10-16 03:09:30

标签: arrays combinations

您将获得一个大小为(N)的数组,其中包含条目(P_i)。您可以从数组中精确选择一个元素 每天。同样,在每天结束时,数组所有元素的值都将减少为(50 \%) 一天的开始。这意味着,如果特定日期数组中的条目为(P_i),则在该日期将其减少为(P_i / 2)。 一天结束。

注意

  1. 执行的除法是整数除法
  2. 一旦选择任何元素都将无法再次选择。

还向您提供(Q)查询。 每个查询都包含一个数字(K_i)。您必须确定选择数组元素的方式数量 这样所选的值之和为/(ge K_i)。

输入格式:

第一行:(T)表示测试用例的数量 对于每个测试用例:

第一行:整数(N),表示数组的大小 下一行:(N)个空格分隔的整数(P_i \),表示第一天数组元素的值 o下一行:整数(Q),查询数量 下一行:(Q)以空格分隔的整数(K_i)

输出格式: 对于每个测试用例,打印一行包含(Q)以空格分隔的整数的单行,这些整数表示获取方法的数量 以这样的方式挑选数组的元素,使挑选出来的值的总和为(ge K_i)。

约束: (1 \ le T \ le 10 \ 1 \ le N \ le 8 \ 1 \ le Q \ le 10 ^ 5 \ 0 \ le P_i \ le 10 ^ 8 \ 0 \ le k_i \ le 10 ^ 9 \\) 样本输入: 1个 3 3 8 10 2 13 15

示例输出:3 0

说明

要获得总和> = 13,有3种方法

方法1:在第1天的第8点选择条目2,在第2天的10/2处选择条目3,在3/4 8 + 5 + 0 = 13处选择条目1

方式2:在第1天的第10点选择条目3。在第2天的3/2处选择条目1,在8/4 10 + 1 + 2 = 13的第2件条目。 方式3:在第1天的第10天选择条目3,在第2天的8/2处选择条目2,在3/4 = 10 + 4 + 0 = 14时选择条目1 无法获得> = 15的总和 时间限制:每次输入1秒

我尝试过解决问题,但没有得到答案

0 个答案:

没有答案