给定n个关卡,每个关卡BOSS血量为ai,当我们挑战第i关时,假设我们当前有k点血量,如果k>ai,那么我们会恢复k−ai点血,否则会扣除ai−k点血。当血量小于0时,游戏失败。求通关的最少初始血量。
显然,在该规则下,我们初始血量越高,通关机会越大,因此初始血量是有单调性的,于是可以考虑二分的做法。
当二分当前初始血量时,可以根据题意O(N)的去判断该血量能否通关(根据题意进行模拟即可),因此时间复杂度也是能够接受的。
时间复杂度为O(Nlog(N))。
塔子哥又在玩游戏了!
和往常一样,游戏依旧有n关,每关有一个ai血的BOSS,塔子哥最开始依旧有k滴血!
当挑战第i个BOSS时,如果塔子哥当前血量x>ai,那么塔子哥会恢复x−ai血!
否则,塔子哥会扣除ai−x血!
当塔子哥血量低于0时,游戏失败!
塔子哥想知道,初始血量最低为多少时,能通关这个游戏?
第一行为一个正整数n≤105,代表关卡数量
第二行为n个正整数1<=ai<=105,代表每关BOSS血量
一个正整数,代表初始最低血量
输入
3
3 3 4
输出
3
本题属于以下题库,请选择所需题库进行购买