E29940:机器猫斗恶龙
greedy, http://cs101.openjudge.cn/practice/29940/
机器猫出门斗恶龙了!他需要通过 n 个关卡。
每个关卡要么是与怪物战斗,扣除一定的血量;要么是营地,给机器猫增加一定的血量。
在旅途中,机器猫任意时刻的血量不能低于或等于 0。问机器猫至少需要多少的初始血量,才能完成任务。
血量为正整数。
输入
第一行,一个正整数 n,表示关卡数量。
第二行,共 n 个整数 a_i,表示每个关卡。
- 若 a_i>0,则表示这个关卡是营地,增加 a_i 的血量 - 若 a_i<0,则表示这个关卡是战斗,机器猫血量代价为 a_i
所有数据满足 n <= 100000, 1 <= |a_i| <= 1000。
输出
仅一行,一个正整数,表示机器猫需要的初始血量。
样例输入
sample1 input:
3
-100 -200 -300
sample1 output:
601样例输出
sample2 input:
5
-200 -300 1000 -100 -100
sample2 output:
501
# 机器猫带着 501 点血量出门,两场战斗之后剩下 1,恢复到 1001,两场战斗之后为 801,完成任务。提示
greedy
来源
https://www.luogu.com.cn/problem/B3628 (TA-tcy)
假设0血入场,累计血量变化的最小值。
python
n = int(input())
a = list(map(int, input().split()))
s = 0
min_s = float('inf')
for num in a:
s += num
if s < min_s:
min_s = s
print(-min_s + 1)