甚至于这一题就一个测试点。
by XH1111 @ 2023-07-18 20:06:25
有可能你的代码错了,亮出代码吧(我懒得写了)
by denominator @ 2023-07-18 20:13:17
这道题不是二分吗?二分板子差不多橙题吧
by CSP_AK_zc @ 2023-07-18 20:25:30
@[denominator](/user/174009)
我写的代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[1000001],n;
bool check(int x) {
int i;
for(i=1; i<=n; i++) {
x+=a[i];
if(x<=0) return 0;
}
return 1;
}
int main() {
int i,l=1,r=INT_MAX/2,mid;
cin>>n;
for(i=1; i<=n; i++) {
cin>>a[i];
//r+=abs(a[i]);
}
while(l<=r) {
mid=(l+r)/2;
if(!check(mid)) l=mid+1;
else r=mid-1;
}
cout<<l;
}
```
by CSP_AK_zc @ 2023-07-18 20:43:44
我写的代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a[100005],c,m,b[100005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>=0){
b[i]=1;
}
else{
b[i]=0;
}
}
for(int i=1;i<=n;i++){
if(b[i]==1){
c+=a[i];
}
else{
c=c+a[i];
if(c<=0){
m=m-c;
c=0;
}
}
}
cout<<m+1;
return 0;
}
by XH1111 @ 2023-07-19 22:34:35
这道题要用个鬼二分。
by XH1111 @ 2023-07-19 22:35:03
思路对了就够了。
@[CSP_AK_zc](/user/36093)
by XH1111 @ 2023-07-19 22:35:44
确实,我13行就过了,连数组都不要。
13行代码如下:
```
#include<bits/stdc++.h>
using namespace std;
int main(){
int s,d,now=0,minn=100000001;
cin>>s;
for(int i=0;i<s;i++){
cin>>d;
now+=d;
if(now<minn)minn=now;
}
if(minn<=0)cout<<abs(minn)+1;
else cout<<1;
}
```
by User1014399 @ 2023-07-20 12:53:58
模拟模拟……
by Squirrel_GZQ @ 2023-07-20 15:37:44
但这一题用你们那种方法思维难度会高一些吧,用二分的方法码量会大一些,所以橙差不多吧
by CSP_AK_zc @ 2023-07-21 08:19:05