CF1413E Solo mid Oracle

题目描述

Meka-Naruto 玩一个电脑游戏。他的角色拥有如下技能:对一个敌方英雄造成 $a$ 点瞬间伤害,然后在技能释放后每秒结束时为该敌人恢复 $b$ 点生命值,持续 $c$ 秒,从技能释放后第 $1$ 秒开始。也就是说,如果在时间 $t$ 释放技能,敌人的生命值会在 $t$ 时刻减少 $a$,然后在 $t+1$、$t+2$、…、$t+c$ 时刻分别因该技能各恢复 $b$ 点生命。 该技能有 $d$ 秒的冷却时间,即如果 Meka-Naruto 在时刻 $t$ 使用技能,则下次可以在 $t+d$ 时刻再次使用。请注意,他只能在整数时刻使用技能,因此所有对敌人生命值的改变也都只会发生在整数时刻。 不同技能释放的效果可以叠加;也就是说,当前有 $k$ 个技能效果作用在敌人身上时,敌人本秒会恢复 $k \cdot b$ 点生命。此外,如果同一时刻有多个生命值变化发生,这些变化会同时结算。 现在 Meka-Naruto 想知道,如果他每次技能冷却好就立刻释放(即每隔 $d$ 秒释放一次技能),他是否能仅靠这个技能杀死敌人。敌人在生命值降到 $0$ 或以下时被击杀。假设敌人的生命值只会受到 Meka-Naruto 技能的影响。请问敌人最多能有多少生命值,Meka-Naruto 仍然能够击杀他?

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^5$),表示测试用例的数量。 每个测试用例一行,包含四个整数 $a$、$b$、$c$ 和 $d$($1 \leq a, b, c, d \leq 10^6$),分别表示瞬间伤害值、每秒恢复量、恢复持续秒数和技能冷却时间。

输出格式

对于每个测试用例,输出一行。如果技能可以击杀任意生命值的敌人,输出 $-1$;否则输出 Meka-Naruto 能够击杀的敌人最大生命值。

说明/提示

在第一个样例中,每一点伤害都会在一秒后被抵消,因此 Meka-Naruto 无法造成超过 $1$ 点的伤害。 在第四个样例中,敌人受到: - 第 $1$ 次技能释放,在 $0$ 时刻受到 $4$ 点伤害; - 第 $2$ 次技能释放,在 $1$ 时刻受到 $4$ 点伤害,同时第 $1$ 次技能带来 $3$ 点恢复(总共对初始生命造成 $5$ 点伤害); - 第 $3$ 次技能释放,在 $2$ 时刻受到 $4$ 点伤害,同时第 $1$、$2$ 次技能带来 $6$ 点恢复(总共对初始生命造成 $3$ 点伤害); - 以此类推。 可以证明,在任意时刻,敌人受到的总伤害都不会达到 $6$ 点或以上,因此答案为 $5$。请注意生命值的结算方式:例如,初始生命为 $8$ 的敌人在 $1$ 时刻不会死亡,因为如果先减去 $4$ 点伤害再判断是否死亡,然后再加 $3$ 点恢复,他会被判定死亡,但实际上应该先结算所有变化再判断。 在第六个样例中,敌人无论有多少生命值,都可以在足够长的时间内被击杀。 在第七个样例中,答案超出了 32 位整数的范围。 由 ChatGPT 4.1 翻译