Problem\mathrm{Problem}Problem
有一个英雄,初始生命值是hphphp(生命值无上限),在接下来的nnn秒内,每秒会受到一次伤害,第i秒受到的伤害值为a[i]a[i]a[i]。这个英雄有一个道具“魔杖”,魔杖的初始能量为000,每受到一次伤害,积攒一点能量。在英雄受到伤害后,可以立即释放魔棒中的能量,恢复15×15×15×[能量点数]的生命值,且魔棒的点数清零。释放能量有施法间隔cdcdcd(cdcdcd是正整数),即相邻的两次释放的时间间隔至少有cdcdcd秒。任何时刻当hp≤0hp≤0hp≤0时视为死亡,问这个英雄存活下来的前提下,cdcdcd的值最大可以是多少?
注意,若a[i]a[i]a[i]为负,受到“伤害”后实际上生命值是增加的,魔棒仍然积攒能量。
Solution\mathrm{Solution}Solution
显然我们可以想到二分cdcdcd,关键是我们如何判断二分值xxx的合法性。
我们如果要用差分约束来的不等式来限制的话,我们设did_idi表示前i次的恢复次数。
- 显然di−di−1≥0d_i-d_{i-1} \ge 0di−di−1≥0。
- 对于我们二分的数值xxx有:di−di−x≤1d_i-d_{i-x}\le 1di−d