WA,求助

B3628 机器猫斗恶龙

``` #include<bits/stdc++.h> using namespace std; int n,m,ans,l=1,r; int a[285397]; bool erb(int x){ bool bc=true; if(x<=0){ bc=false; } for(int i=0;i<n;i++){ x+=a[i]; if(x<=0){ bc=false; } } return bc; } int main(){ scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&a[i]); } r=1e8; ans=0; while(l<=r){ m=l+(r-l)/2; while(1) if(erb(m)){ r=m-1; ans=m; }else{ l=m+1; } } printf("%d",ans); return 0; } ```
by zero_egg @ 2023-10-10 22:02:10


这道题纯二分练习题,暴力模拟都过不了,可以尝试放弃
by zero_egg @ 2023-10-10 22:03:05


``` #include<iostream> using namespace std; int a,n,sum=1,add=0; int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a; if(a<0){ if(add==0) { sum+=0-a; } else if(add!=0 && add>0-a){ add+=a; } else { int x=a+add; add = 0; sum -= x; } }else if(a>=0){ add+=a; } } cout<<sum; return 0; } ``` 帮你修改了,已AC
by sgweo8ys @ 2023-10-10 22:05:40


@[zero_egg](/user/615166) 这题其实可以模拟,假设初始血量是0,扫一遍得到过程中血量的最低值 mn(会是一个负数或0),输出 -mn + 1 即可。
by sgweo8ys @ 2023-10-10 22:19:24


@[sgweo8ys](/user/203501) 好吧,膜拜大佬 ~~这题切过好久了都忘了,有时间重看一遍~~
by zero_egg @ 2023-10-10 22:22:05


|