#514. 回收中心
回收中心
问题描述
在回收中心,有 个垃圾袋,第 个袋子的重量为 。每经过 秒,会连续执行以下两步操作:
- 销毁:你必须选择一个垃圾袋并销毁它。如果该袋子重量严格大于 ,则支付 枚硬币;否则支付 枚硬币。
- 增重:所有剩余垃圾袋的重量均会翻倍。
问:为了销毁完所有垃圾袋,至少需要支付多少硬币?
输入格式
第一行包含整数 (),表示测试用例数。
每个测试用例格式如下:
- 第一行包含两个整数 和 (,)。
- 第二行包含 个整数 (),表示每个垃圾袋的初始重量。
输出格式
对每个测试用例,输出一个整数——销毁完所有垃圾袋所需支付的最少硬币数。
样例输入
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
说明
-
样例 1(,袋子初始重量 )的一种最优策略:
- 待销毁前重量 :销毁重量 (免费), 剩余 翻倍 → 。
- 销毁重量 (免费),剩余 →。
- 销毁重量 (付 币),剩余 →。
- 销毁重量 (免费),剩余 →。
- 销毁重量 (付 币)。 共支付 枚硬币,且无法更优。
-
样例 2(,重量都为 ),每次袋子翻倍后仍大于 ,需要对每个都付 币,总共 。