题目: 传送门
思路: 一道数学,大体就是计算一下每个循环的净伤害量,然后看要几个循环才能杀死,如果为正数则永远杀不死,注意有个特殊情况,例如 怪兽血量为 100 时 回合的情况为 -100 +200, 这种情况的循环净伤害量为 +100,但是在第一回合就能杀死。
long long hp,n;
long long a[200050];
int main() {
cin>>hp>>n;
long long sum = 0;
long long maxs = 0;
for(int i=1;i<=n;i++) {
cin>>a[i];
sum+=a[i];
maxs = max(maxs,sum*-1);
if(sum+hp<=0) {
cout<<i<<endl;
return 0;
}
}
if(sum>=0) {
cout<<"-1"<<endl;;
}
else {
//cout<<hp<<' '<<maxs<<' '<<sum<<' '<<endl;
long long ans = ( (hp-maxs-1)/sum*-1+1) * n;
//cout<<ans<<endl;
hp = hp - ans/n*-sum;
//cout<<hp<<endl;
int i = 1;
while(hp>0) {
hp +=a [i];
i++;
ans++;
}
cout<<ans<<endl;
}
return 0;
}~