#514. 回收中心

回收中心

问题描述

在回收中心,有 nn 个垃圾袋,第 ii 个袋子的重量为 aia_i。每经过 11 秒,会连续执行以下两步操作:

  1. 销毁:你必须选择一个垃圾袋并销毁它。如果该袋子重量严格大于 cc,则支付 11 枚硬币;否则支付 00 枚硬币。
  2. 增重:所有剩余垃圾袋的重量均会翻倍。

问:为了销毁完所有垃圾袋,至少需要支付多少硬币?

输入格式

第一行包含整数 tt1t10001 \le t \le 1000),表示测试用例数。

每个测试用例格式如下:

  • 第一行包含两个整数 nncc1n301 \le n \le 301c1091 \le c \le 10^9)。
  • 第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n1ai1091 \le a_i \le 10^9),表示每个垃圾袋的初始重量。

输出格式

对每个测试用例,输出一个整数——销毁完所有垃圾袋所需支付的最少硬币数。

样例输入

4
5 10
10 4 15 1 8
3 42
1000000000 1000000000 1000000000
10 30
29 25 2 12 15 42 14 6 16 9
10 1000000
1 1 1 1 1 1 1 1 1 864026633

样例输出

2
3
6
1

说明

  • 样例 1n=5,c=10n=5,c=10,袋子初始重量 [10,4,15,1,8][10,4,15,1,8])的一种最优策略:

    1. 待销毁前重量 [10,4,15,1,8][10,4,15,1,8]:销毁重量 1010(免费), 剩余 [4,15,1,8][4,15,1,8] 翻倍 → [8,30,2,16][8,30,2,16]
    2. 销毁重量 88(免费),剩余 [30,2,16][30,2,16][60,4,32][60,4,32]
    3. 销毁重量 3232(付 11 币),剩余 [60,4][60,4][120,8][120,8]
    4. 销毁重量 88(免费),剩余 [120][120][240][240]
    5. 销毁重量 240240(付 11 币)。 共支付 22 枚硬币,且无法更优。
  • 样例 2n=3,c=42n=3,c=42,重量都为 10910^9),每次袋子翻倍后仍大于 4242,需要对每个都付 11 币,总共 33