这是只过第二个点的代码:
#include<bits/stdc++.h>
#define maxn 200010
#define inf -0x3f3f3f3f
using namespace std;
int n,a[maxn];
int s[maxn],ans=inf;
int main(){
cin>>n;
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]+a[i];
for(int j=1;j<i;j++){
ans=max(ans,s[i]-s[j]);
}
}
cout<<ans;
return 0;
}
这是只错第二个点的代码:
#include<bits/stdc++.h>
#define maxn 200010
#define inf -0x3f3f3f3f
using namespace std;
int n,a[maxn];
int s[maxn],u[maxn],ans=inf,mn=0;
int main(){
cin>>n;
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]+a[i];
mn=min(mn,s[i]);//减数mn越小↓
u[i]=max(u[i-1],s[i]-mn);//差越大
ans=max(ans,u[i]);
}
cout<<ans;
return 0;
}
这是第二个点:
2000
-145 -1033 -407 -656 -1063 -231 -302 -531
......
-102 -676 -662 -970 -710 -983 -600 -215
(太长了,如果没看错,全是负数)
想求得正解