CF2128A.Recycling Center

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Recycling Center

题目描述

在回收中心,有 nn 个垃圾袋,第 ii 个垃圾袋的重量为 aia_i。每一秒钟,会依次发生以下两个操作:

  • 首先,你必须选择一个垃圾袋并销毁它。如果该垃圾袋的重量严格大于 cc,则需要花费 11 个硬币,否则不需要花费硬币。
  • 然后,剩余每个垃圾袋的重量都会变为原来的两倍。

你需要花费的最少硬币数是多少,才能销毁所有垃圾袋?

输入格式

每个测试点包含多组测试数据。第一行包含测试用例数 tt1t10001 \le t \le 1000)。接下来是每组测试数据的描述。

每组测试数据的第一行包含两个整数 nncc1n301 \leq n \leq 301c1091 \leq c \leq 10^9)。

每组测试数据的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091 \leq a_i \leq 10^9),表示每个垃圾袋的重量。

输出格式

对于每组测试数据,输出一个整数,表示销毁所有垃圾袋所需的最少硬币数。

说明/提示

在下面的解释中:

  • 蓝色数字表示被免费销毁的垃圾袋,
  • 红色数字表示被花费 11 个硬币销毁的垃圾袋,
  • 黑色数字表示尚未被销毁的垃圾袋。

对于第一个测试用例,一种方案如下:

  • [10,4,15,1,8][10, 4, 15, 1, 8]
  • [10,8,30,2,16][\color{blue}{10}, 8, 30, 2, 16]1010 被免费销毁,因为 101010 \leq 10
  • [10,8,60,4,32][\color{blue}{10}, \color{blue}{8}, 60, 4, 32]88 被免费销毁,因为 8108 \leq 10
  • $[\color{blue}{10}, \color{blue}{8}, 120, 8, \color{red}{32}]$,3232 被花费 11 个硬币销毁,因为 32>1032 > 10
  • $[\color{blue}{10}, \color{blue}{8}, 240, \color{blue}{8}, \color{red}{32}]$,88 被免费销毁,因为 8108 \leq 10
  • $[\color{blue}{10}, \color{blue}{8}, \color{red}{240}, \color{blue}{8}, \color{red}{32}]$,240240 被花费 11 个硬币销毁,因为 240>10240 > 10

总共花费了 22 个硬币,并且可以证明这是最优的。

对于第二个测试用例,一种方案如下:

  • $[1\,000\,000\,000, 1\,000\,000\,000, 1\,000\,000\,000]$
  • $[\color{red}{1\,000\,000\,000}, 2\,000\,000\,000, 2\,000\,000\,000]$,10000000001\,000\,000\,000 被花费 11 个硬币销毁,因为 1000000000>421\,000\,000\,000 > 42
  • $[\color{red}{1\,000\,000\,000}, \color{red}{2\,000\,000\,000}, 4\,000\,000\,000]$,20000000002\,000\,000\,000 被花费 11 个硬币销毁,因为 2000000000>422\,000\,000\,000 > 42
  • $[\color{red}{1\,000\,000\,000}, \color{red}{2\,000\,000\,000}, \color{red}{4\,000\,000\,000}]$,40000000004\,000\,000\,000 被花费 11 个硬币销毁,因为 4000000000>424\,000\,000\,000 > 42

由 ChatGPT 4.1 翻译

样例

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

在线编程 IDE

建议全屏模式获得最佳体验