#CSP1202. 分裂 (splash)

    ID: 4557 Type: Default File IO: splash 1000ms 256MiB Tried: 23 Accepted: 8 Difficulty: 7 Uploaded By: Tags>CSP-S复赛模拟国庆集训

分裂 (splash)

题目描述

小 Y 最近沉迷于游戏”超级代数大师“,在游戏中,他化身掌握数学之力的神秘魔法师,通过代数的武器击败敌人,走上王座!

最近小 Y 来到了新的关卡:分裂峡谷。史莱姆们是这里的统治者。他们有一种令人厌恶的分裂技能——“SPLASH”:某只史莱姆一旦受伤,假设其受伤后剩余生命值为x,它将立即分裂成两个生命值分别为 x2\lfloor \frac{x}{2}\rfloorx2\lceil \frac{x}{2}\rceil 的史莱姆。如果新生成的史莱姆将来继续受伤,其仍然会使用这一技能。生命值为0的史莱姆会立即死亡。

好在小 Y 恰好拥有对抗他们的最佳武器:代数魔法卷轴"SHOCK"!具体来说,每次小 Y 使用SHOCK 魔法卷轴,都会对每个史莱姆都造成 yy 的伤害。如果一个史莱姆的生命值在使用魔法卷轴之前没有超过 yy,它将在使用魔术卷轴后立即死亡。

上图显示的例子为:y=5y=5,有两个史莱姆生命值分别为x1=25x2=8x_1=25,x_2=8,使用一次魔法卷轴后的效果。

小 Y 的魔法卷轴可以使用任意次数,因此这注定是一场单向杀戮。但是反复点击鼠标太累了,所以小 Y 想让你计算一下,给定战场上史莱姆的初始状态,他至少需要使用多少次魔法卷轴来杀死战场上的所有史莱姆?

输入格式

splash.in 文件读入数据。

第一行包含一个整数 TT,表示数据组数。

对于每个测试数据:

  • 第一行包含两个整数 n,yn,y,表示战场上的史莱姆数量,和使用一次魔法卷轴可以对每个史莱姆造成伤害。

  • 第二行包含 nn 个整数 x1,x2,,xnx_1,x_2,\dots,x_n,表示战场上每个史莱姆的初始生命值。

输出格式

输出到 splash.out 文件。

输出 TT 行。

对于每个数据,输出一行一个整数,代表答案。

样例 1

2
2 5
25 8
1 1
100
3
7

对于样例 1 中的,第一个数据,史莱姆生命值的变化为:$\{25,8\} \to \{10,10,2,1\} \to \{3,2,3,2\}\to \emptyset$

数据范围

对于每个测试点, 保证 $1\le T\le 10^5, ~1\le n\le 10^5, ~1\le y,x_i\le 10^{18}$

保证每个测试点所有测试数据中 nn 的总和不超过 10610^6

子任务 分数 附加约束条件
11 1010 y=1018y = 10^{18}
22 1515 xi100x_i\le 100
33 2020 n=1,xi106n=1, x_i\le 10^6
44 2525 n=1n=1
55 3030 无附加限制