#CSP1202. 分裂 (splash)
分裂 (splash)
题目描述
小 Y 最近沉迷于游戏”超级代数大师“,在游戏中,他化身掌握数学之力的神秘魔法师,通过代数的武器击败敌人,走上王座!
最近小 Y 来到了新的关卡:分裂峡谷。史莱姆们是这里的统治者。他们有一种令人厌恶的分裂技能——“SPLASH”:某只史莱姆一旦受伤,假设其受伤后剩余生命值为x,它将立即分裂成两个生命值分别为 和 的史莱姆。如果新生成的史莱姆将来继续受伤,其仍然会使用这一技能。生命值为0的史莱姆会立即死亡。
好在小 Y 恰好拥有对抗他们的最佳武器:代数魔法卷轴"SHOCK"!具体来说,每次小 Y 使用SHOCK 魔法卷轴,都会对每个史莱姆都造成 的伤害。如果一个史莱姆的生命值在使用魔法卷轴之前没有超过 ,它将在使用魔术卷轴后立即死亡。
上图显示的例子为:,有两个史莱姆生命值分别为,使用一次魔法卷轴后的效果。
小 Y 的魔法卷轴可以使用任意次数,因此这注定是一场单向杀戮。但是反复点击鼠标太累了,所以小 Y 想让你计算一下,给定战场上史莱姆的初始状态,他至少需要使用多少次魔法卷轴来杀死战场上的所有史莱姆?
输入格式
从 splash.in
文件读入数据。
第一行包含一个整数 ,表示数据组数。
对于每个测试数据:
-
第一行包含两个整数 ,表示战场上的史莱姆数量,和使用一次魔法卷轴可以对每个史莱姆造成伤害。
-
第二行包含 个整数 ,表示战场上每个史莱姆的初始生命值。
输出格式
输出到 splash.out
文件。
输出 行。
对于每个数据,输出一行一个整数,代表答案。
样例 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}$
保证每个测试点所有测试数据中 的总和不超过 。
子任务 | 分数 | 附加约束条件 |
---|---|---|
无附加限制 |
Related
In following contests: